快速从地址簿框架返回空值
Posted
技术标签:
【中文标题】快速从地址簿框架返回空值【英文标题】:Null value returns from AddressBook framework in swift 【发布时间】:2015-10-06 07:11:13 【问题描述】:在我的 swift 应用程序中,我正在从 AddressBook 框架中检索 AddressBook 联系人。联系人检索成功,但以下情况除外。
案例 1:
如果我将没有联系人姓名的联系人号码单独保存到地址簿,则联系人添加成功。
但是,如果我尝试检索没有姓名的联系人,应用程序会崩溃,说 收到致命错误。
编码:
var contactName: String = ABRecordCopyCompositeName(addressBookRecord).takeRetainedValue() as NSString as String
我不知道如何处理这个空值异常。请指导我,如何解决这个问题。
【问题讨论】:
你为什么不检查contactName是否返回null,如果是的话,给它一个空字符串?像这样paste.ubuntu.com/12695416 你应该看看新的联系人框架developer.apple.com/library/prerelease/mac/documentation/… 应用程序在该行 @NSNoob 崩溃。那我该怎么做呢? 应用程序在您提供的行或支票上崩溃? 是的!应用程序在上述行崩溃。 【参考方案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
【讨论】:
以上是关于快速从地址簿框架返回空值的主要内容,如果未能解决你的问题,请参考以下文章