在iOS8中获取contactID时出错 - 崩溃

时间:2014-10-26 15:50:54

标签: ios crash ios8 contacts

我一直在iOS应用程序中工作,当我需要从手机获取联系信息时,这是我的代码:

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

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

问题出在iOS8中,在这一行: CFRetain(origContactRef);

因为该对象为空。

我该如何解决?

问候语。

1 个答案:

答案 0 :(得分:0)

如果contactID为-1,则以下其余语句将失败。

在这种情况下,-1表示找不到记录。

您需要在发生错误时检查错误,您不能只假设每个方法调用都会成功。在这种情况下,检查错误的第一个位置是ABRecordGetRecordID语句。

来自Apple documentation

  

ABRecordGetRecordID

     

返回值记录中存在的记录的唯一ID   地址簿数据库。

     

当记录尚未保存到数据库时的kABRecordInvalidID。

#define kABRecordInvalidID -1