如何从iPhone地址获取电子邮件地址和名称

时间:2012-02-14 11:09:50

标签: iphone objective-c

我试过这个但它崩溃了:

- (NSDictionary *)contacts {

    NSMutableArray *result = [NSMutableArray array];
    ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);

    CFRelease(addressBook);

    NSArray *peopleArray = (NSArray *)people;

    //  Return if there are no contacts in the address book
    if (peopleArray && peopleArray.count > 0) {

        for (int i = 0; i <= peopleArray.count - 1; i++) {

            ABRecordRef person = [peopleArray objectAtIndex:i];
            ABRecordID sourceID = ABRecordGetRecordID(person);

            ABMutableMultiValueRef multiEmail = ABRecordCopyValue(person, kABPersonEmailProperty);

            NSString *emailAddress = (NSString *) ABMultiValueCopyValueAtIndex(multiEmail, 0); //EXE BAD ACCESS

            [emailAddress release];
            CFRelease(multiEmail);

            NSLog(@"email address %@", emailAddress);

            NSString *sourceId = [NSString stringWithFormat:@"%i", sourceID];

            NSLog(@"%@", sourceId);
        }
    }

    if (peopleArray) CFRelease(people);
    return [NSArray arrayWithArray:result];
}

1 个答案:

答案 0 :(得分:1)

在完成之前,请尽量不要释放addressBook。我有一个similar problem并解决了这个问题。