在我的viewdidload中使用以下代码尝试,我似乎无法将测试联系人加载到我的测试iphone(运行IOS 6)。关于为什么这不起作用的任何建议?
CFErrorRef* error;
// create address book record
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(nil,error);
// create a person
ABRecordRef person = ABPersonCreate();
// first name of the new person
ABRecordSetValue(person, kABPersonFirstNameProperty, @"FirstName" , nil);
// his last name
ABRecordSetValue(person, kABPersonLastNameProperty, @"LastName", nil);
//add the new person to the record
ABAddressBookAddRecord(addressBook, person, nil);
ABRecordRef group = ABGroupCreate(); //create a group
ABRecordSetValue(group, kABGroupNameProperty,@"My Group", error); // set group's name
ABGroupAddMember(group, person, error); // add the person to the group
ABAddressBookAddRecord(addressBook, group, error); // add the group
//save the record
ABAddressBookSave(addressBook, nil);
// relase the ABRecordRef variable
CFRelease(person);
答案 0 :(得分:0)
答案 1 :(得分:0)
NSMutableArray* contactList=[[NSMutableArray alloc]initWithCapacity:0];
ABAddressBookRef m_addressbook = ABAddressBookCreate();
if (!m_addressbook) {
NSLog(@"opening address book");
}
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
for ( int i=0;i < nPeople;i++) {
NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary];
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
CFStringRef firstName;
NSString* lastName;
firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
lastName = (NSString*)ABRecordCopyValue(ref, kABPersonLastNameProperty);
if(!lastName){
lastName=@"";
}
[dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName,lastName] forKey:@"name"];
//For Email ids
ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty);
if(ABMultiValueGetCount(eMail) > 0) {
[dOfPerson setObject:(NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"];
}
//Birthday
CFStringRef birthday = ABRecordCopyValue(ref, kABPersonBirthdayProperty);
if(birthday){
[dOfPerson setObject: (NSDate*)birthday forKey:@"birthday"];
}
ABRecordRef record = CFArrayGetValueAtIndex(allPeople,i);
//******* RecordID
NSNumber *recordId = [NSNumber numberWithInteger:ABRecordGetRecordID(record)];
NSString *recordStr=[NSString stringWithFormat:@"%@",recordId];
[dOfPerson setObject:recordStr forKey:@"recordId"];
//********
ABMultiValueRef phones = ABRecordCopyValue(record, kABPersonPhoneProperty);
//For Phone number
NSString* mobileLabel;
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
mobileLabel = (NSString*)ABMultiValueCopyLabelAtIndex(phones, j);
if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel])
{
[dOfPerson setObject:(NSString*)ABMultiValueCopyValueAtIndex(phones, j) forKey:@"Phone"];
}
else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel])
{
[dOfPerson setObject:(NSString*)ABMultiValueCopyValueAtIndex(phones, j) forKey:@"Phone"];
break ;
}
}
ABMultiValueRef anniversaries = ABRecordCopyValue(record, kABPersonDateProperty);
NSString *anniversaryLabel;
for (CFIndex j=0; j < ABMultiValueGetCount(anniversaries); j++) {
anniversaryLabel = (NSString*)ABMultiValueCopyLabelAtIndex(anniversaries, j);
if([anniversaryLabel isEqualToString:(NSString *)kABPersonAnniversaryLabel])
{
NSDate *anniversaryDate=(NSDate *)ABMultiValueCopyValueAtIndex(anniversaries, j);
NSLog(@"%@",anniversaryDate);
[dOfPerson setObject:anniversaryDate forKey:@"anniversaryDate"];
}
}
[contactList addObject:dOfPerson];
}