2013-03-18 61 views
0

我有一個UITableView多節。 tableview的一部分有兩行,其中一行是可編輯的(插入按鈕),另一行顯示地址簿的名稱。 單擊單元格中的插入按鈕,我加載peoplePickerView並選擇一個聯繫人。NSString在連接時有空值

我從通訊錄聯繫人爲

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { 

    NSString *firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 

    NSString *middleName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonMiddleNameProperty); 

    NSString *lastName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); 

    self.contactName = [NSString stringWithFormat:@"%@/%@/%@", firstName ?: @"", middleName ?: @"", lastName ?: @""]; 

    [self.myTableView reloadData]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    return NO; 
} 

在tableview中的的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.section == 0){ 
     if(indexPath.row == 0){ 
     cell.textLabel.text = self.contactName; 
     NSLog(@"Contact Name %@", self.contactName); 
    } 
    else{ 
     cell.textLabel.text = @""; 
    } 
} 
} 

當我設置爲字符串,只有名字屬性,則該字符串有正確的價值,但是當我嘗試連接字符串(第一+中間+姓氏)並重新加載tableview,我得到一個空值。我做錯了什麼,我該如何糾正?

回答

1

我做了什麼錯誤被宣告財產CONTACTNAME弱

@property(nonatomic, weak) NSString *contactName; 

連接字符串作爲艾哈邁德建議之前還檢查空。

1

嘗試更換以下線..

self.contactName = [NSString stringWithFormat:@"%@/%@/%@", firstName ?: @"", middleName ?: @"", lastName ?: @""]; 

像這一點,並檢查..

self.contactName = [[NSString alloc] initWithFormat:@"%@/%@/%@", firstName ?: @"", middleName ?: @"", lastName ?: @""]; 
+0

我做錯了什麼是聲明屬性CONTACTNAME弱 '@財產(非原子,弱)的NSString *聯繫人姓名;' – 2013-03-18 06:05:48

+0

@XaviValero - 這很好,並嘗試上面的代碼也如果需要的話。 – 2013-03-18 06:11:01

0

你必須做出的兩件事情

  1. ,你一定在調用[NSString stringWithFormat...之前初始化您的self.contactName,例如在viewDidLoad中執行以下操作self.contactName = [NSString alloc] init]

2.如果您嘗試連接一個零字符串爲一個字符串最後的結果也將是零,確保所有的字符串包含在級聯碼具有值,而不是零