0

アドレス帳で電話番号を名前で検索しようとしていますが、

-(void)textMessage{
ABAddressBookRef addressBook = ABAddressBookCreate();
NSMutableArray *array;
    for(int i = 0;i<[savedPeople count];i++){
        array = [[[NSMutableArray alloc]initWithArray:savedPeople]objectAtIndex:i];
        CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, (CFStringRef)array);
        NSLog(@"%@",people);
    }
}

そして、私はこれのログを取得します

2012-05-01 09:22:31.688 UpOut[5829:15803] (
    "<CPRecord: 0x84edf90 ABPerson>"
)
2012-05-01 09:22:31.694 UpOut[5829:15803] (
    "<CPRecord: 0x84ee1c0 ABPerson>"
)

真ん中の文字列が何を意味するのかわかりませんが、正しく返されましたか??

編集

for(NSString *name in savedPeople){
    CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, (CFStringRef)name);
    CFTypeRef phoneProperty = ABRecordCopyValue((ABRecordRef)people, kABPersonPhoneProperty);
    NSLog(@"%@",phoneProperty);
}
4

1 に答える 1

3

はい、ABPersonレコードです。

あなたのコードはあなたが望むことをしていますが、非常に悪く書かれており[[[NSMutableArray alloc]initWithArray:savedPeople]objectAtIndex:i];、配列ではなくNSStringです。

for(NSString *name in savedPeople)
    CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, (CFStringRef)name);

から値を抽出ABPersonするには、ドキュメントを確認してください。例えば:

CFTypeRef phoneProperty = ABRecordCopyValue((ABRecordRef)people, kABPersonPhoneProperty);
于 2012-05-01T16:28:59.913 に答える