我正在尝试将地址添加到已挑选的联系人:
- (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);
}正如我在console中看到的,保存它没有问题。但是,当我在联系人应用程序中打开联系人时,没有保存地址。
发布于 2014-10-01 23:40:39
发行说明非常有用。没有找到引用的项目:"ABPeoplePickerNavigationController.h“和新的"PeoplePicker: Picking a Person or Property sample project”。
苹果的“增强功能”已经冲刷了我的20个商业应用程序,这些应用程序依赖AB来获取联系信息。再次感谢苹果修复了一些没有损坏的东西。
发布于 2014-09-27 22:26:54
引用自iOS 8发行说明文档:
iOS 8的地址簿用户界面人员选择器已更改。添加了具有新
的新模式,其中应用程序不需要访问用户的联系人,并且不会提示用户访问。所选人员的临时副本将返回到应用程序。有关更多详细信息,请参阅ABPeoplePickerNavigationController.h。
请参阅新的PeoplePicker: Picking a Person or Property示例项目,演示新模式的用法。
因此,您将遇到新的API,在此之前,您可能只使用临时副本,而不是实际的数据库,它实际联系应用程序访问。
https://stackoverflow.com/questions/26035112
复制相似问题