0
我的应用程序存储具有相同名称的联系人的AddressBook recordIds,稍后尝试将地址呈现给用户以选择所需的人员。但是,当我使用ABAddressBookGetPersonWithRecordID存储的recordIds时,它返回nil。 下面的代码表示代码项目 - 我已经“复制”了稍后尝试在存储recordIds的代码下方检索Contact的代码。ABAddressBookGetPersonWithRecordID返回零
NSString *full = person.compositeName;
CFArrayRef contacts = ABAddressBookCopyPeopleWithName(addressBook, (__bridge CFStringRef)(full));
CFIndex nPeople = CFArrayGetCount(contacts);
if (nPeople)
{
NSMutableArray *rIds = [[NSMutableArray alloc] init];
int numberOfContactsMatchingName = (int)CFArrayGetCount(contacts);
if (numberOfContactsMatchingName>1)
{
for (int i=0; i<numberOfContactsMatchingName; ++i)
{
ABRecordID thisId = ABRecordGetRecordID(CFArrayGetValueAtIndex(contacts, i));
NSNumber *rid = [NSNumber numberWithInteger:thisId];
FLOG(@"%d Matched, this ID = %@", numberOfContactsMatchingName, rid);
[rIds addObject:rid];
}
for (int i=0; i<rIds.count; ++i)
{
//contactRecord = ABAddressBookGetPersonWithRecordID(addressBook, (ABRecordID)recId);
ABRecordRef contactRecord;
contactRecord = ABAddressBookGetPersonWithRecordID(addressBook, rIds[i]);
if (contactRecord)
{
}
else
{
FLOG (@"Noone found with recordId %@", rIds[i]);
}
}
因此,举例来说,我只是跑这一点,并发现具有相同名称的地址簿中的两个触点 - 与IDS 143和305,但是当我再尝试ABAddressBookGetPersonWithRecordID与IDS 143和305,都返回零。 我在这里弄错了什么?
当然 - 愚蠢的我。我不知道编译器是否可以警告它,但我想它会使用NSNumber的地址并将其视为int。谢谢你的帮助。 – guinnessman 2014-10-03 13:08:03