AddressBook:ABRecordCopyValue(person,kABPersonPhoneProperty)未能得到一些数字

时间:2015-08-18 02:42:07

标签: ios swift addressbook contact-list

经过多次搜索,我遇到了一个问题(我相信)还没有得到明确解决。

我的目标是从手机的联系人列表中提取电话号码。许可已被授予。我使用这段代码从给定的联系人中提取数据(变量' 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。

1 个答案:

答案 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")
    }