如何在iPhone应用程序中使用ABAddressBookRef?

时间:2011-03-23 06:38:27

标签: iphone objective-c xcode

我想在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");
        }

    }

谢谢

2 个答案:

答案 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互动的完美示例。

相关问题