ABRecordSetValue(person,kABPersonPhoneProperty,(__bridge CFTypeRef)phoneNum,nil); ABRecordSetValue(person,kABPersonEmailProperty,(__bridge CFTypeRef)eMailId,nil);
注释这两行可以提供正确的输出(将条目保存到AdressBook,无需电子邮件和电话输入).
但是,在执行过程中它会失败并导致程序崩溃.
Vars的价值是:
phoneNum:000-000-0000
eMailId:AbcdefghIjklm@qwertyuiopasdfghjk.com
错误类型:EXC_BAD_ACCESS
任何的想法?
或者还需要更多信息?
解决方法
很高兴看到你定义变量的位置和类型.您可能还在这些行之前发布了地址簿. (例如CFRelease(multiPhone);)
据我所知,phoneNum和emailID应该是ABMutableMultiValueRef.至少我是这样做的:
据我所知,phoneNum和emailID应该是ABMutableMultiValueRef.至少我是这样做的:
添加一个电话号码
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); ABMultiValueAddValueAndLabel(multiPhone,[self.contact telephone],kABPersonPhoneMobileLabel,NULL); ABRecordSetValue(person,multiPhone,nil);
ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType); ABMultiValueAddValueAndLabel(multiEmail,@"abc@abc.com",kABWorkLabel,NULL); ABRecordSetValue(person,multiEmail,&error); CFRelease(multiEmail);
有关Address Book tutorial的更多信息
希望这可以帮助.