我试图为选择的联系人添加地址:
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
didSelectPerson:(ABRecordRef)person{
// Adding address
ABMutableMultiValueRef addressMultipleValue = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
[addressDictionary setObject:@"8-15 Dereham Place" forKey:(NSString *)kABPersonAddressStreetKey];
[addressDictionary setObject:@"London" forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary setObject:@"EC2A 3HJ" forKey:(NSString *)kABPersonAddressZIPKey];
[addressDictionary setObject:@"United Kingdom" forKey:(NSString *)kABPersonAddressCountryKey];
[addressDictionary setObject:@"gb" forKey:(NSString *)kABPersonAddressCountryCodeKey];
ABMultiValueAddValueAndLabel(addressMultipleValue, (__bridge CFTypeRef)(addressDictionary), kABHomeLabel, NULL);
ABRecordSetValue(person, kABPersonAddressProperty, addressMultipleValue, nil);
CFErrorRef anError = NULL;
BOOL didSet;
didSet = ABAddressBookSave(_addressBook, NULL);
if (!didSet) {
NSError *er = (__bridge NSError *)(anError);
NSLog(@"Error saving record: %@", er.localizedDescription);}else{
NSLog(@"Record updated successfully");
}
CFRelease(addressMultipleValue);
}
正如我在控制台中看到的那样,保存它没有问题。但是,当我在通讯录应用程序中打开联系人时,没有保存的地址。
答案 0 :(得分:2)
发行说明非常有帮助。两个项都没有引用:" ABPeoplePickerNavigationController.h"或者新的" PeoplePicker:选择一个人或财产样本项目"可以找到。
Apple"增强"已经给我的20个商业应用程序提供了依赖AB的联系信息。再次感谢Apple修复了一些没有破坏的东西。
答案 1 :(得分:0)
引用 iOS 8发行说明文档:
已针对iOS 8更改了地址簿UI人员选择器。添加了一个带有新API的新模式,其中应用程序不需要访问用户的联系人,也不会提示用户进行访问。所选人员的临时副本将返回给应用程序。有关详细信息,请参阅ABPeoplePickerNavigationController.h。
查看新的PeoplePicker:选择演示新模式使用情况的人员或财产示例项目。
所以你要满足新的API,在此之前,你可能只使用临时副本而不是实际的数据库,实际上是联系人应用程序访问。