将 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,无论我 select 在我的地址簿中有什么记录。我是一名新手程序员,我完全被困住了。
感谢您的帮助!
编辑:
下面的评论者表示这是为地址簿数据库中不存在的记录保留的值...
这令人困惑。我只是浏览 AB 以从现有记录中获取名称值和 ID...现有记录怎么可能没有保存到地址簿数据库中的记录?以下是文档中的定义:具有此 ID 的记录尚未保存到地址簿数据库中。我误会了吗?
在 iOS8 中,您可以浏览联系人而无需请求访问地址簿的权限(例如,因为您可能允许用户执行默认操作,并将实际数据返回到应用程序)。但要真正获取联系人的详细信息,您必须明确请求许可。
看来您一定是使用 AddressBookUI.framework 来显示联系人 UI,但从未请求访问联系人详细信息的权限。
我正在尝试将地址簿中现有联系人的 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,无论我 select 在我的地址簿中有什么记录。我是一名新手程序员,我完全被困住了。
感谢您的帮助!
编辑: 下面的评论者表示这是为地址簿数据库中不存在的记录保留的值...
这令人困惑。我只是浏览 AB 以从现有记录中获取名称值和 ID...现有记录怎么可能没有保存到地址簿数据库中的记录?以下是文档中的定义:具有此 ID 的记录尚未保存到地址簿数据库中。我误会了吗?
在 iOS8 中,您可以浏览联系人而无需请求访问地址簿的权限(例如,因为您可能允许用户执行默认操作,并将实际数据返回到应用程序)。但要真正获取联系人的详细信息,您必须明确请求许可。
看来您一定是使用 AddressBookUI.framework 来显示联系人 UI,但从未请求访问联系人详细信息的权限。