经过多次搜索,我遇到了一个问题(我相信)还没有得到明确解决。
我的目标是从手机的联系人列表中提取电话号码。许可已被授予。我使用这段代码从给定的联系人中提取数据(变量' person'):
let unmanagedPhones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeUnretainedValue()
println("unmanagedPhone: \(unmanagedPhones)")
对于我手机上的某些联系人,这会返回以下内容(我已经用#'来审查了一些数字):
unmanagedPhone:ABMultiValueRef 0x170468d00,含2个值 0: $!Mobile!$ (0x #########) - 1(###)### - ####(0x170#45 ###) 1: $!工作!$ (0x #########) - 1(###)### - ####(0x#70 ## 3#a0 )
对于许多其他人来说,这会返回:
unmanagedPhone:ABMultiValueRef 0x170474a40,其中包含0个值
我已确认相关联系人至少有一个号码。在浏览地址簿时,我无法弄清楚为什么有些联系人会工作而其他联系人却没有。有没有人对如何开始调试这个有任何建议或指示?谢谢,全部!
在Xcode 6.4,iOS 8上使用Swift。
答案 0 :(得分:0)
试试这个:
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")
}