2011-03-23 30 views
2

我想在iPhone应用程序的其中一个参考我的地址簿。我使用了下面的代码。但其显示[人数] = 0.如何使用ABAddressBookRef for iPhone应用程序?

我的地址簿应用程序中有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

尝试 -

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); 

更新 作为火腿Holmgren的注意,这个答案是旧的,ABAddressBookCreate()在iOS6的弃用。您需要改用ABAddressBookCreateWithOptions()。 GOOD LUCK

+0

仍然不起作用 – spaleja 2011-03-23 10:41:23

+1

请注意,在iOS 6 ABAddressBookCreate()已被弃用。使用ABAddressBookCreateWithOptions()。更多信息在这里:http://stackoverflow.com/questions/12083643/how-do-i-correctly-use-abaddressbookcreatewithoptions-method-in-ios-6/12510649#12510649 – 2012-10-19 15:27:41

+0

顺便说一句,为什么你不叫CFRelease地址簿? – 2014-02-28 08:15:27

1

只需按照给定的代码在这里。一个与ABAddressBook互动的完美例子。

相关问题