2014-09-25 39 views
0

我想添加一個地址到採摘接觸:不能地址保存到ABRecordRef

- (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

的iOS 8發佈援引說明文件:

地址簿UI人員選取已更改爲iOS 8.用新的API的新模式已被添加在應用程序並不需要訪問用戶的聯繫人和用戶將不會被提示訪問。所選人員的臨時副本將返回到應用程序。有關更多詳細信息,請參閱ABPeoplePickerNavigationController.h。

查看新的PeoplePicker:選擇一個Person或Property示例項目,演示使用新模式。

因此,你會遇到新的API,直到你可能只是臨時副本,而不是實際的數據庫,實際上通訊錄應用程序訪問。

2

發行說明非常有幫助。無論是哪個項目引用:「ABPeoplePickerNavigationController.h」或新的「PeoplePicker:採摘個人或財產樣本項目」可以找到。

蘋果公司的「增強版」已經推出了20款依靠AB獲取聯繫信息的商業應用程序。再次感謝Apple修復一些未破的東西。