我想獲取聯繫人的複合名稱,但是當聯繫人的名字和姓氏都爲空時,此代碼崩潰。我如何測試複合名稱屬性是否爲零?在這種情況下爲什麼不是可選綁定工作?可選綁定不能使用ABAddressBook kABCompositeNameProperty
let allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
for person: ABRecordRef in allPeople {
var compositeName: String? = ""
// Crashes on the next line
if let cName = ABRecordCopyCompositeName(person).takeRetainedValue() as? String {
compositeName = cName
} else {
compositeName = ""
}
let phones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
for counter in 0..<ABMultiValueGetCount(phones) {
let phone = ABMultiValueCopyValueAtIndex(phones, counter).takeRetainedValue() as! String
contactArray.append(nameNumber(name: compositeName!, number: phone))
}
}
試試這個:http://stackoverflow.com/questions/32963845/null-value-returns-from-addressbook-framework-in-swift/32965283#32965283 –
這是行不通的。在這種情況下,所有複合名稱返回的是零。即使compositeName有值,這也會使「if let」失敗。 –
它在哪裏崩潰? – JeremyP