【问题标题】:NSString has null value when concatenated连接时 NSString 具有空值
【发布时间】:2013-03-18 05:48:36
【问题描述】:

我有一个包含多个部分的 UITableView。 tableview 的一部分有 2 行,其中一个是可编辑的(插入按钮),另一个显示地址簿中的名称。 单击单元格中的插入按钮,我正在加载 peoplePickerView 并选择一个联系人。

我从通讯录中获取联系人为

- (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 = @"";
    }
}
}

当我设置为字符串时,只有 firstname 属性,然后字符串具有正确的值,但是当我尝试连接字符串(first +middle+last names)并重新加载 tableview 时,我得到一个空值。我做错了什么,我该如何纠正?

【问题讨论】:

    标签: uitableview ios5 nsstring abpeoplepickerview


    【解决方案1】:

    尝试替换下面的行..

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

    像这样然后检查..

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

    【讨论】:

    • 我做错了将属性contactName声明为弱@property(nonatomic, weak) NSString *contactName;
    • @XaviValero - 没关系,如果需要也可以试试上面的代码。
    【解决方案2】:

    我做错了将属性contactName声明为弱

    @property(nonatomic, weak) NSString *contactName;
    

    按照 Ahmad 的建议,在连接字符串之前还要检查 null。

    【讨论】:

      【解决方案3】:

      你必须确保两件事

      1. 您在调用[NSString stringWithFormat... 之前正在初始化self.contactName,例如在viewDidLoad 中执行以下self.contactName = [NSString alloc] init]

      2.如果你尝试将一个 nil 字符串连接到一个字符串,最终结果也是 nil,请确保连接代码中包含的所有字符串都有值而不是 nil

      【讨论】:

        猜你喜欢
        • 2010-12-12
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多