我正在尝试在cellForRowAt indexPath方法中添加代码,如下所示
cell.itemNameLabel.text = nameArray[indexPath.row]
但它显示的错误为Cannot assign value of type 'Any' to type 'String?'
所以可以通过以下两种方式解决,
cell.fruitName.text = fruitArray[indexPath.row] as? String
或
cell.fruitName.text = (fruitArray[indexPath.row] as! String)
所以,我的问题是2个答案之间有什么区别?
答案 0 :(得分:1)
cell.fruitName.text = fruitArray[indexPath.row] as? String
以上返回类型是可选值。表示如果数组不是字符串值,则返回nil
值。
cell.fruitName.text = (fruitArray[indexPath.row] as! String)
以上返回类型是非可选值。意味着如果数组不是字符串值,它将是致命错误。
答案 1 :(得分:0)
以下是所有期权的一般信息。请找到它。
当您使用!
且 fruitArray [indexPath.row] 为nil
时,它将触发运行时错误,但如果使用?
则会失败正常。
您可以在Apple document
中找到更多详细信息