если у вас уже есть данные и вы просто хотите записать их в адресную книгу, то вам не нужен - ABNewPersonViewController. ABNewPersonViewController используется для предоставления пользователю возможности добавлять запись в адресную книгу с помощью общего контроллера адресной книги iphone.
вместо этого вы должны сделать следующее:
а) добавьте адресную книгу () в ваше приложение.
б) импортировать заголовки адресной книги в ваше представление.
c) создать экземпляр адресной книги и новую запись:
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newPerson = ABPersonCreate();
г) для свойств с одним значением, которые вы используете:
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("Katie"), nil);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Bell"), nil);
e) для многозначных свойств, таких как номер телефона/почта, которые вы используете:
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, @"054-5429920", kABHomeLabel, NULL);
ABMultiValueAddValueAndLabel(multiPhone,@"02-9809878", kABWorkLabel, NULL);
ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil);
CFRelease(multiPhone);
ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiEmail, @"[email protected]", kABHomeLabel, NULL);
ABRecordSetValue(newPerson, kABPersonEmailProperty, multiEmail, &error);
CFRelease(multiEmail);
f) сохраните изменения в адресной книге, ни один из написанных вами кодов не вступит в силу без этого:
ABAddressBookAddRecord(addressBook, newPerson, nil);
BOOL didAdd = ABAddressBookSave(addressBook, nil);
g) освободить запись и адресную книгу и проверить добавлена ли запись:
CFRelease(newPerson);
CFRelease(addressBook);
NSLog(@"didAdd = %d",didAdd);
вот и все удачи надеюсь помогло
Шани
person
shannoga
schedule
19.12.2010