2011-12-29 21 views
0

一個新的條目在iOS系統中,我試圖創建在地址簿中通過ABUnknownPersonViewController使用此代碼的新條目(這是一個的UITableViewController):試圖建立地址簿通過ABUnknownPersonViewController在iOS

- (void)      tableView:(UITableView *)tableView 
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *phoneNumber = [[cell textLabel] text]; 
    ABRecordRef record = ABPersonCreate(); 
    CFErrorRef error = NULL; 
    ABMutableMultiValueRef phone = 
      ABMultiValueCreateMutable(kABPersonPhoneProperty); 
    ABMultiValueAddValueAndLabel 
      (phone, phoneNumber, kABPersonPhoneMobileLabel, NULL); 
    bool didSet = ABRecordSetValue(record, kABPersonPhoneProperty, phone, 
      &error); 

    if (!didSet) { 
     return; 
    } 
    ABUnknownPersonViewController *viewController = 
      [[[ABUnknownPersonViewController alloc] init] autorelease]; 

    [viewController setUnknownPersonViewDelegate:self]; 
    [viewController setAllowsAddingToAddressBook:YES]; 
    [viewController setAllowsActions:NO]; 
    [viewController setDisplayedPerson:record]; 
    [[self navigationController] setNavigationBarHidden:NO animated:NO]; 
    [[self navigationController] pushViewController:viewController 
      animated:YES]; 
    CFRelease(record); 
    CFRelease(phone); 
} 

編輯: 但它顯然崩潰,因爲phoneNumber被格式化之前被添加到地址簿(ej「987654321」成爲「987 654 321」)。如果我用常量字符串(@「987654321」)替換phoneNumber,則所有內容都可以正常運行。此外,如果我增加值不是爲了ABPersonPhoneProperty,而是爲ABPersonEmailProperty正常運行。

任何幫助?

+0

您是否嘗試過創建@property(複製)NSString * selectedPhoneNumber?如果你創建一個屬性,當你爲它分配textLabel文本時,它將被複制。當選擇下一個單元格時,它將釋放並複製。 – bryanmac 2011-12-29 21:06:25

+0

「其他任何字符串」是什麼意思?一個常量@「字符串」?任何使用[[NSString alloc] init ...]創建的字符串? – 2011-12-29 21:11:15

+0

@bryanmac指定複製的屬性不能解決問題。我會繼續嘗試。 – caliopigio 2011-12-29 22:32:17

回答

0

它的工作,而我取代:

ABMutableMultiValueRef phone = ABMultiValueCreateMutable(kABPersonPhoneProperty); 

有:

ABMutableMultiValueRef phone = ABMultiValueCreateMutable(kABPersonEmailProperty); 

這是不理想,但工作。