【问题标题】:Null value returns from AddressBook framework in swift快速从地址簿框架返回空值
【发布时间】:2025-12-15 04:35:01
【问题描述】:

在我的 swift 应用程序中,我正在从 AddressBook 框架中检索 AddressBook 联系人。联系人检索成功,但以下情况除外。

案例 1:

如果我将没有联系人姓名的联系人号码单独保存到地址簿,则联系人添加成功。

但是,如果我尝试检索没有姓名的联系人,应用程序会崩溃,说 收到致命错误。

编码:

var contactName: String = ABRecordCopyCompositeName(addressBookRecord).takeRetainedValue() as NSString as String

我不知道如何处理这个空值异常。请指导我,如何解决这个问题。

【问题讨论】:

标签: swift ios8 addressbookui


【解决方案1】:

如果您有任何没有姓名的联系人,此代码不会崩溃:

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)"]);
            }
        }
    }
}

原帖:App crashing while fetching contact numbers from iPhone in SWIFT

【讨论】: