[英]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.