我有一个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中显示的样式,但它给了我相同的结果。
有关崩溃原因的任何建议吗?
答案 0 :(得分:1)
问题是我本来应该使用kABMultiStringPropertyType而不是kABPersonPhoneProperty用于phoneNumber。