在我的TableViewController类中有一条奇怪的错误消息
class MenuTableViewController: UITableViewController {
fileprivate var menuItems = [MenuItem]()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UINib(nibName: "MenuItemTableViewCell", bundle: nil), forCellReuseIdentifier: CELL_MENU_ITEM)
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuItems.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: CELL_MENU_ITEM, for: indexPath) as! MenuItemTableViewCell
// this line throws the error message
if let menuItem = self.menuItems[indexPath.row].getTitle() as [MenuItem] {
cell.itemTitleLabel.text = menuItem
}
return cell
}
func setMenuItems(menuItems: [MenuItem]) {
self.menuItems = menuItems
}
}我完全不知道那个错误意味着什么。还有一些人在inout类型下面临这个问题,但是他们用'=‘而不是'==’之类的方法来做错误。顺便说一下,在完成函数中的另一个类中设置了menuItems的值。但是如果我把它从那里移除,我仍然会得到这个错误。
发布于 2016-12-05 10:54:47
由于menuItems被声明为一个具体的非可选类型,因此不需要类型转换或可选绑定。
let menuItem = self.menuItems[indexPath.row]
cell.itemTitleLabel.text = menuItem.getTitle()错误消息可能有误导性。您正在尝试将(推定的) String转换为[MenuItem]
发布于 2016-12-05 10:52:28
也许你想检查一下MenuItem?就像这样:
if let menuItem = self.menuItems[indexPath.row] as MenuItem {
cell.itemTitleLabel.text = menuItem.getTitle()
}并且使用[MenuItem]类型声明集合,因此订阅将返回非可选值,您可以删除iflet检查并使用:
cell.itemTitleLabel.text = self.menuItems[indexPath.row].getTitle()
发布于 2017-10-04 19:49:49
我错过了在我的自定义结构中导入uikit并得到一个类似的错误。希望它能帮助别人在这里读书。
https://stackoverflow.com/questions/40972488
复制相似问题