2011-04-14 132 views
0

使用Google Toolbox for Mac我試圖在ABPeoplePickerNavigationController中選擇它時將聯繫人詳細信息添加到我的iPhone上的現有聯繫人。我通過逐步調試程序中的過程來確認沒有錯誤報告,但細節未顯示在「通訊錄」應用程序中。使用GTMABAddressBook將聯繫人詳細信息保存到現有聯繫人

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)personRef { 
    GTMABPerson *record = [GTMABPerson recordWithRecord:personRef]; 
    GTMABPerson *person = [[GTMABAddressBook addressBook] personForId:[record recordID]]; 

    GTMABMutableMultiValue *addresses = [[[person valueForProperty:kABPersonAddressProperty] mutableCopy] autorelease]; 
    if (!addresses) { 
     addresses = [GTMABMutableMultiValue valueWithPropertyType:kABMultiDictionaryPropertyType]; 
    } 

    NSMutableDictionary *address = [NSMutableDictionary dictionary]; 
    [address setObject:@"Street" forKey:(NSString *)kABPersonAddressStreetKey]; 
    [address setObject:@"City" forKey:(NSString *)kABPersonAddressCityKey]; 
    [address setObject:@"Country" forKey:(NSString *)kABPersonAddressCountryKey]; 
    [addresses addValue:address withLabel:(CFStringRef)@"Label"]; 

    [person setValue:addresses forProperty:kABPersonAddressProperty]; 
    // [[GTMABAddressBook addressBook] addRecord:person]; This line doesn't help either 
    [[GTMABAddressBook addressBook] save]; 

    [self.navigationController dismissModalViewControllerAnimated:YES]; 
    return NO; 
} 

任何想法我可能做錯了什麼?

+0

我認爲它的MacOS不適用於iOS(iPhone)。 – Ravin 2011-04-14 06:57:00

+0

適用於Mac和iOS。我現在只想在iOS上使用它。 – 2011-04-14 07:19:01

回答

0

終於明白了:+addressBook沒有返回一個singleton,而是返回一個新實例化的GTMABAddressBook實例。我不得不簡單地使用相同的實例來實際保存更改。

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)personRef { 
    GTMABPerson *record = [GTMABPerson recordWithRecord:personRef]; 
    GTMABAddressBook *addressBook = [GTMABAddressBook addressBook]; 
    GTMABPerson *person = [addressBook personForId:[record recordID]]; 

    GTMABMutableMultiValue *addresses = [[[person valueForProperty:kABPersonAddressProperty] mutableCopy] autorelease]; 
    if (!addresses) { 
     addresses = [GTMABMutableMultiValue valueWithPropertyType:kABMultiDictionaryPropertyType]; 
    } 

    NSMutableDictionary *address = [NSMutableDictionary dictionary]; 
    [address setObject:@"Street" forKey:(NSString *)kABPersonAddressStreetKey]; 
    [address setObject:@"City" forKey:(NSString *)kABPersonAddressCityKey]; 
    [address setObject:@"Country" forKey:(NSString *)kABPersonAddressCountryKey]; 
    [addresses addValue:address withLabel:(CFStringRef)@"Label"]; 

    [person setValue:addresses forProperty:kABPersonAddressProperty]; 
    [addressBook save]; 

    [self.navigationController dismissModalViewControllerAnimated:YES]; 
    return NO; 
} 
相關問題