swift - 无法将“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
}
}
}
解决方案
推荐阅读
- sql-server - SELECT * FROM USERS 但不是我
- elixir - Elixir:如何从 List 创建一对元素
- matlab - 如何编写内部循环以在 Matlab 中仅获取非空电影帧?
- php - 仅在 PHP 中显示大于 x 秒的唯一 ID
- python - 在 Python 的 Cython 方法中传递整数列表的 numpy 数组
- ios - iOS:在我的应用中将视频分享到 youtube
- php - Doctrine DBAL 更新所有行
- javascript -
活动状态不适用于 React 中的后退浏览器按钮 - tensorflow - 从 tf.data.Dataset.map() 返回数据集导致“TensorSliceDataset”对象没有属性“get_shape”错误
- css - CSS中的颜色算术