将电话号码和电子邮件添加到地址簿会导致iPhoneApp崩溃

vir*_*ral 6 iphone objective-c abaddressbook ios

ABRecordSetValue(person, kABPersonPhoneProperty, (__bridge CFTypeRef)phoneNum, nil);
ABRecordSetValue(person, kABPersonEmailProperty, (__bridge CFTypeRef)eMailId, nil);
Run Code Online (Sandbox Code Playgroud)

注释这两行可以提供正确的输出(将条目保存到AdressBook,无需电子邮件和电话输入).但是,在执行过程中它会失败并导致程序崩溃.

Vars的价值是:

phoneNum:000-000-0000

eMailId:AbcdefghIjklm@qwertyuiopasdfghjk.com

错误类型:EXC_BAD_ACCESS

任何的想法?或者还需要更多信息?

Ere*_*şel 16

很高兴看到你定义变量的位置和类型.您可能还在这些行之前发布了地址簿.(例如CFRelease(multiPhone);),而且据我所知,phoneNumemailID应该是ABMutableMultiValueRef.至少我是这样做的:

添加一个单一的电话号码

ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);

ABMultiValueAddValueAndLabel(multiPhone, [self.contact telephone], kABPersonPhoneMobileLabel, NULL);            
ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil);
Run Code Online (Sandbox Code Playgroud)

添加电子邮件:

    ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);
    ABMultiValueAddValueAndLabel(multiEmail, @"abc@abc.com", kABWorkLabel, NULL);
    ABRecordSetValue(person, kABPersonEmailProperty, multiEmail, &error);
    CFRelease(multiEmail);
Run Code Online (Sandbox Code Playgroud)

有关地址簿教程的更多信息

希望这可以帮助.