使用标准添加记录代码我在设置FirstName和Organization以外的属性时遇到了一个非常奇怪的错误(前两行有效):
ABRecordSetValue(person, kABPersonFirstNameProperty, location.title , nil);
ABRecordSetValue(person, kABPersonOrganizationProperty, location.title , nil);
ABRecordSetValue(person, kABPersonPhoneProperty, [location telephone], nil);
ABRecordSetValue(person, kABPersonAddressStreetKey, [location addressLine1], nil);
ABRecordSetValue(person, kABPersonAddressCityKey, [location addressTownCity], nil);
ABRecordSetValue(person, kABPersonAddressZIPKey, [location addressPostcode], nil);
ABRecordSetValue(person, kABPersonAddressStateKey, [location addressCounty], nil);
仅供参考,它不是location.title和[location addressLine1]之间的区别,因为我尝试将kABPersonAddressStreetKey设置为具有相同问题的location.title
即使使用此代码,我也会获得EXC_BAD_ACCESS
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef person = ABPersonCreate();
ABRecordSetValue(person, kABPersonFirstNameProperty, location.title , nil);
ABRecordSetValue(person, kABPersonPhoneProperty, @"0208 1567890", nil);
ABAddressBookAddRecord(addressBook, person, nil);
ABAddressBookSave(addressBook, nil
电话线的原因,我一定要做一些愚蠢的事情!?!?!?
答案 0 :(得分:1)
检查Finding EXC_BAD_ACCESS bugs in a Cocoa project中提供的提示。
在这种情况下,同样有用的是Debugging Applications
中解释的NSZombieEnabled
功能
答案 1 :(得分:0)
您是否尝试使用调试器调试该特定代码行以打印出位置变量的值?
或者至少将该变量的值记录到NSLog()。
<强>编辑:强>
在这种情况下,我猜位置变量不响应选择器方法。
尝试“走进”第3行,看看会发生什么?
答案 2 :(得分:0)
啊,似乎是因为电话和地址字段是多值的,我还没有意识到这个
可以找到更多细节