我有这个奇怪的错误消息,在我的TableViewController类不能下标类型的值“INOUT [菜单项]”(又名“INOUT阵列<MenuItem>”)
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
}
}
我完全不知道是什么错误的手段。还有其他人正在用type inout来面对这个问题,但他们正在用'='而不是'=='和类似的东西来做错误。顺便说一句,menuItems的值在完成函数中的另一个类中被设置。但是,如果我从那里删除它,我仍然有这个错误。
谢谢,我曾经这样做过,但它不工作。在vadian实施它的方式中,它是有效的。也许Xcode的错误,因为我认为你的/我的版本和他是一样的。无论如何非常感谢你! – Brudus
@Brudus这是不一样的,Xcode没有错误。编译器不允许可选的绑定('如果let')应用于非可选类型。 – vadian
是的,我知道你的意思,但我只是补充说,如果让因为另一个错误。我认为这是Xcode中的一个错误,但在重新访问它之后,它也可能是我的另一个错误。 – Brudus