簡體   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