' var contacts = [details]()'有什么区别?和' var联系人:[详情]?'在ios swift中

时间:2015-05-24 05:49:04

标签: ios swift

我使用var contacts:[details]? = nil编写了代码,我遇到了无法访问contacts?.count的问题,我不得不在任何地方使用选项。 例如contacts[indexPath.row]?.firstname

但是当我使用var contacts = [details]()时,我不必在任何地方使用选项。我可以直接使用contacts.countcontacts[indexPath.row].firstname

即使数组为空,我们也不需要使用?,上述两者之间有什么区别

此外,使用var contacts:[details]?对我不起作用。

1 个答案:

答案 0 :(得分:2)

首先初始化一个数组(类型详细信息)并给出一个空数组,而第二个只声明一个变量(可选),它可以是详细信息类型

<强>选配

var contacts : details?

是一个可选变量(当不是&#39; nil&#39;时可以是类型细节)

因此,无论何时尝试访问可选变量,Swift都使用可选链接,您必须放置?

修改

  

我不明白我们把它放在哪里?我们不把它放在哪里

来自Swift's Doc

  

如果可选值为非零,则通过在要调用属性,方法或下标的可选值之后放置一个问号(?)来指定可选链接。这与在可选值之后放置感叹号(!)以强制展开其值非常相似。主要区别在于,当optional是nil时,可选链接正常失败,而当optional是nil时,强制解包会触发运行时错误。

所以当你想要解包变量并在其上调用一个属性时,你就放了?