我想在iPhone应用程序中引用我的地址簿。我使用下面的代码。但它显示[人数] = 0。
我的地址簿应用程序中有3-4个联系人仍然[人数]返回零。
还有什么,我在这里失踪了?
代码是:
ABAddressBookRef addressBook = ABAddressBookCreate();
NSMutableArray *people = [[[(NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook) autorelease] mutableCopy]autorelease];
[people sortUsingFunction:(int (*)(id,id,void*)) ABPersonComparePeopleByName context:(void*)ABPersonGetSortOrdering()];
NSLog(@"count..%i",[people count]);
for(int i = 0 ; i < [people count]; i++){
ABRecordRef person = [people objectAtIndex:i];
//get phone no fill phone no into array
ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
if(multi!=NULL && ABMultiValueGetCount(multi)>0) {
NSLog(@"in value..");
}
else {
NSLog(@"no value");
}
}
谢谢
答案 0 :(得分:2)
试试 -
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people;
people = ABAddressBookCopyArrayOfAllPeople(HiByeGroup);
if (people){
CFArrayCreateMutableCopy(kCFAllocatorDefault,CFArrayGetCount(people),people);
NSInteger numberOfPersonsInAB=CFArrayGetCount(peopleMutable);
for (int i =0; i< numberOfPersonsInAB; i++) {
//your code
}
CFRelease(people);
<强>更新强>
正如Jamon Holmgren所指出的,这个答案已经过时了,并且在iOS6中不推荐使用ABAddressBookCreate()
。您需要使用ABAddressBookCreateWithOptions()
代替。
好运
答案 1 :(得分:1)
在这里按照给定的代码。与ABAddressBook互动的完美示例。