提取整个地址簿名称&从ABperson目标cphone电话号码

时间:2010-07-16 17:16:31

标签: iphone objective-c abaddressbook

我需要知道如何提取每个名字和来自iphone的xcode地址簿中的号码。我需要使用以下格式的名称和号码:

John Doe:000000000000000 Jane Doe:000000000000000

1 个答案:

答案 0 :(得分:7)

您是否在搜索地址簿中所有人的所有电话号码?请看ABAddressBookCopyArrayOfAllPeople

您可以像这样使用它:(在浏览器中未经测试编码)

    ABAddressBookRef _addressBookRef = ABAddressBookCreate ();
    NSArray* allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(_addressBookRef);
    NSMutableArray* _allItems = [[NSMutableArray alloc] initWithCapacity:[allPeople count]]; // capacity is only a rough guess, but better than nothing
    for (id record in allPeople) {
        CFTypeRef phoneProperty = ABRecordCopyValue((ABRecordRef)record, kABPersonPhoneProperty);
        NSArray *phones = (NSArray *)ABMultiValueCopyArrayOfAllValues(phoneProperty);
        CFRelease(phoneProperty);
        for (NSString *phone in phones) {
            NSString* compositeName = (NSString *)ABRecordCopyCompositeName((ABRecordRef)record);
            NSString* field = [NSString stringWithFormat@"%@:%@",compositeName,phone];
            [compositeName release];
            [_allItems addObject:field];
        }
        [phoness release];
    }
    CFRelease(_addressBookRef);
    [allPeople release];
    allPeople = nil;