使用NSString更新kABPersonPhoneProperty以添加电话号码

时间:2011-11-17 15:24:59

标签: ios addressbook core-foundation

我有一个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是格式为“555-555-5555”的NSString。当我运行代码并显示带有此方法返回的ABRecordRef的ABPersonViewController时,每个东西都显示正常,但如果我尝试编辑电话号码,程序将崩溃。我尝试将NSString contact.phoneNumber.value重新格式化为“(555)555-5555”以匹配电话号码在ABPersonViewController中显示的样式,但它给了我相同的结果。

有关崩溃原因的任何建议吗?

1 个答案:

答案 0 :(得分:1)

问题是我本来应该使用kABMultiStringPropertyType而不是kABPersonPhoneProperty用于phoneNumber。