2
我试图检索联系人的名字,这里的如何:联系不名会导致应用程序崩溃的iPhone
func getContactNames() {
let adbk : ABAddressBook? = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
let people = ABAddressBookCopyArrayOfAllPeople(adbk).takeRetainedValue() as [ABRecord]
for person in people {
contactList.append(ABRecordCopyCompositeName(person).takeRetainedValue() as String)
}
}
当所有联系人确实有它的作品的名字,虽然那时有没有名字,应用程序崩溃一些接触我得到:
fatal error: unexpectedly found nil while unwrapping an Optional value
我尝试使用?
这样的:
let contact2 = (ABRecordCopyCompositeName(person)?.takeRetainedValue() as? String)
if contact2 != nil {
contactList.append(contact2!)
}
然后我WOU ld总是得到nil
。
任何想法我做错了什么?
我不确定你为什么总是得到'nil',但我会推荐更多Swift样式检查Optional是否为零。这样做:'如果让contact2 =(ABRecordCopyCompositeName(person)?. takeRetainedValue()as?String){ contactList.append(contact2) }' – njuri
这就是如果你有可选值并且你没有检查他们是可选的:它会崩溃。这是可选值的概念和目的,当程序员不小心而不是给出奇怪的结果时会崩溃。如果您有一个可选值并且不存在,则必须检查该值。 – gnasher729