1

经过大量搜索,我遇到了一个(我相信)尚未明确解决的问题。

我的目标是从手机的联系人列表中提取电话号码。已授予权限。我使用这段代码从给定的联系人(变量“人”)中提取数据:

let unmanagedPhones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeUnretainedValue()
println("unmanagedPhone: \(unmanagedPhones)")

对于我手机上的一些联系人,这将返回以下内容(我已经用#s 审查了一些数字):

unmanagedPhone: ABMultiValueRef 0x170468d00 有 2 个值 0: $!Mobile!$ (0x########) - 1 (###) ###-#### (0x170#45## #) 1: $!Work!$ (0x#########) - 1 (###) ###-#### (0x#70##3#a0)

但是,对于许多其他人来说,这会返回:

unmanagedPhone: ABMultiValueRef 0x170474a40 有 0 个值

我已经确认有问题的联系人至少有一个号码。在探索通讯录时,我无法弄清楚为什么有些联系人有效而有些则无效。有人对如何开始调试有任何建议或指导吗?谢谢大家!

在 Xcode 6.4、iOS 8 上使用 Swift。

4

1 回答 1

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")
    }
于 2015-08-19T19:50:08.450 回答