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

在iOS8中获取contactID时出错-崩溃,ios,crash,ios8,contacts,Ios,Crash,Ios8,Contacts,我一直在使用iOS应用程序,当我需要从手机获取联系信息时,这是我的代码: ABRecordID contactID = ABRecordGetRecordID(contact); ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(nil, nil); ABRecordRef origContactRef = ABAddressBookGetPersonWithRecordID(addressBook, contactID)

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

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

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

因为对象为空

我怎样才能修好它


问候语。

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

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

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

从:

ABRecordGetRecordID

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

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


#define kABRecordInvalidID-1

contactID
addressBook
是否良好?这是结果:contactID=-1 addressBook=origContactRef=(null)好的,谢谢,但是ios8和ios7之间有什么区别?因为在ios7中工作正常。不同的联系人或联系人详细信息?为什么现在会失败,联系人中是否有匹配项?通讯录好吗,也是零吗?真正检查代码和每个方法调用的结果。如果所有方法调用都可能失败,请检查它们是否失败。尽早发现错误。