swift 中地址簿框架的空值 returns
Null value returns from AddressBook framework in swift
在我的 swift 应用程序中,我正在从 AddressBook 框架中检索 AddressBook 联系人。除以下情况外,联系人已成功检索。
案例一:
如果我只保存一个没有联系人姓名的联系人号码到地址簿,联系人添加成功。
但是,如果我尝试检索没有姓名的联系人,应用程序会崩溃,提示收到致命错误。
编码:
var contactName: String = ABRecordCopyCompositeName(addressBookRecord).takeRetainedValue() as NSString as String
我不知道如何处理这个空值异常。请指导我,如何解决这个问题。
如果您有任何没有姓名的联系人,此代码将不会崩溃:
func processAddressbookRecord(addressBookRecord: ABRecordRef) {
let addressBookRef: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue();
for person in people{
if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String {
let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String {
print("number = \(number)");
arrayOfContacts.addObject(["\(name)":"\(number)"]);
}
}
}
}
原文post:
在我的 swift 应用程序中,我正在从 AddressBook 框架中检索 AddressBook 联系人。除以下情况外,联系人已成功检索。
案例一:
如果我只保存一个没有联系人姓名的联系人号码到地址簿,联系人添加成功。
但是,如果我尝试检索没有姓名的联系人,应用程序会崩溃,提示收到致命错误。
编码:
var contactName: String = ABRecordCopyCompositeName(addressBookRecord).takeRetainedValue() as NSString as String
我不知道如何处理这个空值异常。请指导我,如何解决这个问题。
如果您有任何没有姓名的联系人,此代码将不会崩溃:
func processAddressbookRecord(addressBookRecord: ABRecordRef) {
let addressBookRef: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue();
for person in people{
if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String {
let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String {
print("number = \(number)");
arrayOfContacts.addObject(["\(name)":"\(number)"]);
}
}
}
}
原文post: