下面2行有什么区别?

时间:2018-05-08 11:43:54

标签: ios swift uitableview

我正在尝试在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个答案之间有什么区别?

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

中找到更多详细信息