UITableView Load Cell和ObjectForKey

时间:2012-04-04 14:40:21

标签: objective-c uitableview

我有一个应该很常见的问题。我有一个名为taskList的数据数组,它来自JSON并具有多个用户数据。到现在为止还挺好。我创建第一个objectForKey:@"desc"并返回结果(用户描述),但是当我尝试添加另一个objectForKey(例如年龄)时,它只显示年龄:(这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = nil;
    cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];

    if (cell == nil){
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"] autorelease];
    }

    NSLog(@"%@",taskList);
    cell.textLabel.text = [[taskList objectAtIndex:indexPath.row] objectForKey:@"desc"];
    return cell;
    cell.textLabel.text = [[taskList objectAtIndex:indexPath.row] objectForKey:@"age"];
    return cell;
}

2 个答案:

答案 0 :(得分:1)

改为:

NSString *desc = [[taskList objectAtIndex:indexPath.row] objectForKey:@"desc"];
NSString *age  = [[taskList objectAtIndex:indexPath.row] objectForKey:@"age"];

cell.textLabel.text = [desc stringByAppendingString:age];
return cell;

另一个格式化字符串的例子(在这种情况下,唯一的区别是我在两者之间添加了一个空格,但它向您介绍了一个非常有用的方法)(并使用我们在上面创建的两个字符串) :

NSString *textForMyLabel = [NSString stringWithFormat:@"%@ %@", desc, age];
cell.textLabel.text      = textForMyLabel;

或者在没有使用临时变量textForMyLabel的情况下执行相同操作:

cell.textLabel.text = [desc stringByAppendingFormat:@" %@", age];

答案 1 :(得分:0)

在您发布的代码中,您将永远不会达到'年龄'部分,因为它会在设置'desc'后返回。即使您解决了这个问题,您仍然会将desc和age指定给单元格中的相同字段,这可能不是您想要的。