我有這個奇怪的錯誤消息,在我的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