首页 > 解决方案 > 无法将“ListViewController.Album”类型的值分配给“Album”类型

问题描述

这是我得到错误的那一行:viewController.album = album

我正在学习通过以下 youtube 视频制作与待办事项列表几乎相同的专辑列表:https ://www.youtube.com/watch?v=qfupg-OeY94

我遇到问题的时间大约是视频中的 47:55。

我不知道为什么会发生此错误,也不知道如何在网站上搜索以找出答案。当我使用Command +右键单击时,它会显示专辑最后是专辑在

let album = albums[indexPath.row]

这是我的 ViewController 代码:

class ListViewController: UITableViewController {
     var albums: [Album] = []
    
    struct Album {
        let albumName: String
        let artistName: String
        let year: String
        let record: String
        let list: String
        }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
     
    }

    /* data Source  */
    
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return albums.count
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "albumCell", for: indexPath)
        
        let album = albums[indexPath.row]
        cell.textLabel?.text = album.albumName
        cell.detailTextLabel?.text = album.artistName
        
        return cell
    }
    
    //Navigation
    
    
    // unwind segue
    @IBAction func unwindToAlbumList(segue: UIStoryboardSegue) {
        if let viewController = segue.source as? EntryViewController {
        guard let albumName = viewController.albumNameTextField.text, let artistName = viewController.artistNameTextField.text, let year = viewController.yearTextField.text, let record = viewController.recordtextField.text, let list = viewController.listTextField.text else { return }
        let albumNew = Album(albumName: albumName, artistName: artistName, year: year, record: record, list: list)
        albums.append(albumNew)
        tableView.reloadData()
        } else if let viewController = segue.source as? DetailViewController {
            if viewController.isDeleted {
                guard let indexPath: IndexPath = viewController.indexPath else { return }
                albums.remove(at: indexPath.row)
                tableView.reloadData()
            }
        }
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "albumDetailSegue" {
            guard let navViewController = segue.destination as? UINavigationController else { return }
            guard let viewController = segue.destination as? DetailViewController else { return }
            guard let indexPath = tableView.indexPathForSelectedRow else { return }
            let album = albums[indexPath.row]
            viewController.album = album
            viewController.indexPath = indexPath
            
           
            
        }
    }
    
}

标签: swiftxcodeuinavigationcontroller

解决方案


推荐阅读