Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AddressBook:ABRecordCopyValue(person,KabbersonPhoneProperty)无法获取一些数字_Ios_Swift_Addressbook_Contact List - Fatal编程技术网

Ios AddressBook:ABRecordCopyValue(person,KabbersonPhoneProperty)无法获取一些数字

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(#####)#######

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

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

试试这个:

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