У меня есть объект Contact (класс, который я написал), который я хочу использовать для создания новой персоны AddressBook. Вот мой код:
+ (ABRecordRef)createABPersonFromContact:(Contact*)contact
{
ABRecordRef person = ABPersonCreate();
ABRecordSetValue(person, kABPersonFirstNameProperty, contact.firstName, NULL);
ABRecordSetValue(person, kABPersonLastNameProperty, contact.lastName, NULL);
ABRecordSetValue(person, kABPersonOrganizationProperty, contact.company, NULL);
CFStringRef phoneNumberValue = (CFStringRef)contact.phoneNumber.value;
CFStringRef phoneNumberLabel = (CFStringRef)contact.phoneNumber.label;
ABMutableMultiValueRef phoneNumber = ABMultiValueCreateMutable(kABPersonPhoneProperty);
ABMultiValueAddValueAndLabel(phoneNumber, value, label, NULL);
ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumber, NULL);
CFRelease(phoneNumber);
return person;
}
contact.phoneNumber.value является строкой NSS в формате "555-555-5555". Когда я запускаю код и отображаю ABPersonViewController с ABRecordRef, возвращаемым этим методом, все отображается правильно, но если я пытаюсь изменить номер телефона, программа вылетает. Я попытался переформатировать NSString contact.phoneNumber.value в "(555) 555-5555", чтобы соответствовать стилю, в котором отображается номер телефона в ABPersonViewController, но он дал мне тот же результат.
Какие-либо предложения относительно того, почему это терпит крах?