Ios 无法为类型为';inout[MenuItem]';(aka';inout数组<;MenuItem>;';)

Ios 无法为类型为';inout[MenuItem]';(aka';inout数组<;MenuItem>;';),ios,swift,Ios,Swift,我的TableViewController类中有一条奇怪的错误消息 class MenuTableViewController: UITableViewController { fileprivate var menuItems = [MenuItem]() override func viewDidLoad() { super.viewDidLoad() self.tableView.register(UINib(nibName: "MenuItemTableViewCel

我的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的值是在完成函数的另一个类中设置的。但是如果我从那里删除它,我仍然会遇到这个错误。

也许你想检查
菜单项
?就像这样:

if let menuItem = self.menuItems[indexPath.row] as MenuItem {
    cell.itemTitleLabel.text = menuItem.getTitle()
}
并且您使用
[MenuItem]
类型声明您的收藏,因此订阅将返回非可选值,您可以删除
iflet
检查并使用:


cell.itemTitleLabel.text=self.menuItems[indexPath.row].getTitle()
也许您想检查
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()
由于
menuItems
声明为具体的非可选类型,因此不需要类型转换或可选绑定

let menuItem = self.menuItems[indexPath.row]
cell.itemTitleLabel.text = menuItem.getTitle()

错误消息可能有误导性。您正在尝试将(假定的)
String
强制转换为
[MenuItem]
,因为
menuItems
声明为具体的非可选类型,因此不需要类型强制转换或可选绑定

let menuItem = self.menuItems[indexPath.row]
cell.itemTitleLabel.text = menuItem.getTitle()

错误消息可能有误导性。您正在尝试将(假定的)
字符串
强制转换为
[MenuItem]

我没有在自定义结构中导入uikit,因此出现类似错误。希望它能帮助读者阅读。

我错过了在自定义结构中导入uikit,并出现了类似的错误。希望它能帮助读者阅读。

谢谢,我以前也有过这样的功能,但它不起作用。瓦迪亚人实施它的方式是有效的。可能是Xcode中的错误,因为我认为您/我的版本和他的版本相同。无论如何,非常感谢@Brudus这是不一样的,Xcode中没有错误。编译器不允许将可选绑定(
if let
)应用于非可选类型。是的,我知道你的意思,但我只是添加了if let,因为另一个错误。我认为这是Xcode中的一个错误,但在重新访问它之后,它也可能是我的另一个错误。谢谢,我以前也有过这样的错误,但它不起作用。瓦迪亚人实施它的方式是有效的。可能是Xcode中的错误,因为我认为您/我的版本和他的版本相同。无论如何,非常感谢@Brudus这是不一样的,Xcode中没有错误。编译器不允许将可选绑定(
if let
)应用于非可选类型。是的,我知道你的意思,但我只是添加了if let,因为另一个错误。我认为这是Xcode中的一个错误,但在重新访问它之后,它也可能是我的另一个错误。