Обновление свойства kABPersonPhoneProperty с помощью строки NSString для добавления номера телефона - PullRequest
1 голос
/ 17 ноября 2011

У меня есть объект 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, но он дал мне тот же результат.

Какие-либо предложения относительно того, почему это терпит крах?

1 Ответ

1 голос
/ 19 ноября 2011

Проблема заключалась в том, что я должен был использовать kABMultiStringPropertyType вместо kABPersonPhoneProperty для phoneNumber.

...