iPhone 응용 프로그램 중 하나에서 내 주소록에 대한 참조를 원합니다. 아래 코드를 사용했습니다. 하지만 그 [사람 수] = 0 표시.iPhone 응용 프로그램에 ABAddressBookRef를 사용하는 방법은 무엇입니까?
나는 내 주소록 응용 프로그램에 3-4 개의 연락처를 가지고 있지만 [사람 수]는 0을 반환합니다.
더 이상입니까, 여기에 없습니까? ,
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);
업데이트 잼 그렌이 언급 한 바와 같이이 답변이 오래되어 ABAddressBookCreate()
는 iOS6의에서 더 이상 사용되지 않습니다 -
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");
}
}
그 시도 당신에게
여전히 작동하지 않습니다. – spaleja
iOS 6에서는 ABAddressBookCreate()가 더 이상 사용되지 않습니다. ABAddressBookCreateWithOptions()를 사용하십시오. 더 많은 정보는 여기 : http://stackoverflow.com/questions/12083643/how-do-i-correctly-use-abaddressbookcreatewithoptions-method-in-ios-6/12510649#12510649 –
그런데 CFRelease를 호출하지 않는 이유는 주소록? –