2014-10-26 49 views
-1

我已經在iOS應用程序一直在努力,當我需要從手機獲取聯繫人信息,這是我的代碼:錯誤得到的ContactID在iOS8上 - 崩潰

ABRecordID contactID = ABRecordGetRecordID(contact); 
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(nil, nil); 
ABRecordRef origContactRef = ABAddressBookGetPersonWithRecordID(addressBook, contactID); 

CFRetain(origContactRef); 
... 
... 
... 
CFRelease(origContactRef); 

的問題是在iOS8上,在此行: CFRetain(origContactRef);

因爲對象爲空。

我該如何解決?

問候。

+0

是'contactID'和''通訊錄好? – zaph 2014-10-26 16:02:17

+0

這是結果: 的ContactID = -1 通訊錄= origContactRef =(空) – 2014-10-26 17:14:07

回答

0

如果contactID爲-1,則下列其餘語句將失敗。

在這種情況下,-1表示沒有找到記錄。

您需要在發生錯誤時檢查錯誤,不能只是假設每個方法調用都會成功。在這種情況下,檢查錯誤的第一個位置在ABRecordGetRecordID聲明中。

Apple documentation

ABRecordGetRecordID

返回值記錄的唯一ID當 通訊錄數據庫中存在的記錄。

當記錄沒有被保存到數據庫時,kABRecordInvalidID。

#define kABRecordInvalidID -1

+0

好的,謝謝你,但就是iOS8上和ios7之間的區別?因爲在ios7工作正常。 – 2014-10-26 20:49:55

+0

不同的聯繫方式或聯繫方式?爲什麼它現在失敗了,聯繫人是否與聯繫人匹配? ABRecord不錯,也是零?真正檢查你的代碼和每個方法調用的結果。如果失敗,請檢查所有方法調用失敗。儘可能早地捕捉錯誤。 – zaph 2014-10-26 21:10:13

+0

謝謝。問候。 – 2014-10-26 23:06:44