繁体   English   中英

将ABRecordID始终转换为NSNumber -1

[英]Convert ABRecordID to NSNumber always -1

我正在尝试将现有联系人的ABRecordID从通讯簿保存到核心数据中。 我在模型中定义了一个Int32,但是为了保存我的对象,我需要将ABRecordID(这是一个Int32)转换为NSNumber

这是我将其转换的代码:

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) {
    let multiValue: ABMultiValueRef = ABRecordCopyValue(person, property).takeRetainedValue()
    let index = ABMultiValueGetIndexForIdentifier(multiValue, identifier)
    let pickedVal = ABMultiValueCopyValueAtIndex(multiValue, index).takeRetainedValue() as! String

    let theRecord = recordIdFromPersonRecord(person)
    println(ABRecordGetRecordID(person!))

func recordIdFromPersonRecord (personRecord: ABRecord) -> NSNumber {
    let recordId = ABRecordGetRecordID(personRecord)
    println(personRecord)
    return (NSNumber(int: recordId))
}

无论我在通讯簿中选择什么记录,此代码始终在控制台中显示-1。 我是一个新手程序员,我完全陷入困境。

谢谢你的帮助!

编辑:下面的注释者指出,这是为通讯录数据库中不存在的记录保留的值...

这很令人困惑。 我只是在浏览AB以从现有记录中获取名称值和ID ...现有记录如何不能将记录保存到地址簿数据库中? 这是docs中的定义:具有该ID的记录尚未保存到通讯簿数据库中。 我误会了吗

在iOS 8中,您可以浏览联系人而无需请求通讯录的权限(例如,因为您可能允许用户执行默认操作,并将实际数据返回给应用程序)。 但是要实际获取联系人的详细信息,您必须明确请求权限。

看来您必须使用AddressBookUI.framework来显示联系人UI,但从未要求获得访问该联系人详细信息的权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM