Ios AddressBook:ABRecordCopyValue(person,KabbersonPhoneProperty)无法获取一些数字
经过多次搜索,我遇到了一个(我相信)还没有明确解决的问题 我的目标是从手机的联系人列表中提取电话号码。已授予权限。我使用这段代码从给定联系人(变量“person”)提取数据: 对于我手机上的一些联系人,这会返回以下信息(我用#删除了一些号码): 非托管电话:带2个值的ABMultiValueRef 0x170468d00 0: $!流动电话!$(0x#########-1(#####)#######(0x170#45#) 1: $!工作!$(0x#########-1(#####)#######(0x#70###3#a0) 然而,对许多其他人来说,这会带来: 非托管电话:带0值的ABMultiValueRef 0x170474a40 我已经确认了相关联系人至少有一个号码。在浏览通讯录的过程中,我不明白为什么有些联系人有效,而另一些则无效。关于如何开始调试这个问题,有人有什么建议或指导吗?谢谢大家 在Xcode 6.4、iOS 8上使用Swift 试试这个:Ios AddressBook:ABRecordCopyValue(person,KabbersonPhoneProperty)无法获取一些数字,ios,swift,addressbook,contact-list,Ios,Swift,Addressbook,Contact List,经过多次搜索,我遇到了一个(我相信)还没有明确解决的问题 我的目标是从手机的联系人列表中提取电话号码。已授予权限。我使用这段代码从给定联系人(变量“person”)提取数据: 对于我手机上的一些联系人,这会返回以下信息(我用#删除了一些号码): 非托管电话:带2个值的ABMultiValueRef 0x170468d00 0: $!流动电话!$(0x#########-1(#####)#######(0x170#45#) 1: $!工作!$(0x#########-1(#####)#######
let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)
//check to make sure we have phone numbers or we will get Fatal error
if unmanagedPhones != nil {
let phones: ABMultiValueRef = unmanagedPhones.takeUnretainedValue() as ABMultiValueRef
let allPhones = ABMultiValueCopyArrayOfAllValues(phones).takeRetainedValue() as NSArray
for eachPhone in allPhones{
print(eachPhone)
}
}
else {
println("No phone numbers found")
}
试试这个:
let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)
//check to make sure we have phone numbers or we will get Fatal error
if unmanagedPhones != nil {
let phones: ABMultiValueRef = unmanagedPhones.takeUnretainedValue() as ABMultiValueRef
let allPhones = ABMultiValueCopyArrayOfAllValues(phones).takeRetainedValue() as NSArray
for eachPhone in allPhones{
print(eachPhone)
}
}
else {
println("No phone numbers found")
}
嗨,保罗C-谢谢你的回复!我尝试了你的方法,但最终还是导致了一个致命的错误。如果我在“let unmanagedPhones”之后和“let phones”语句之前添加println语句,我会得到这个读数(仍然只适用于某些联系人,而不适用于其他联系人):unmanagedPhones:Swift.Unmanaged unmanagedPhones!=nil致命错误:在打开可选值时意外发现nil Hi Paul C-感谢您的回复!我尝试了你的方法,但最终还是导致了一个致命的错误。如果我在“let unmanagedPhones”之后和“let phones”语句之前添加println语句,我会得到这个读数(仍然只适用于某些联系人,而不适用于其他联系人):unmanagedPhones:Swift.Unmanaged unmanagedPhones!=nil致命错误:在展开可选值时意外发现nil