nscfstring text无法识别的选择器发送到实例

时间:2012-06-24 21:42:47

标签: objective-c memory-management ios4

我试图找出前3个小时的错误。通过搜索,我已经知道这个错误与内存管理有关,但我没有弄清楚我做错了什么。

我已声明这4个标签:

@interface InteractiveHistory : UITableViewController {
UILabel *date;
UILabel *startTime;
UILabel *cal;
UILabel *duration;
}

然后创建属性并合成它们。在viewDidLoad中,我初始化了所有这些:

date = [[UILabel alloc] init];

我也在dealloc()方法中取消分配它们。

我想要做的是使用这4个标签在表格的单元格中写入一些文本。文本将取决于indexPath。

在cellForRowAtIndexPath方法中,只显示2个标签并指出错误行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

        NSLog(@"constructing cell");

        //set up labels text

        date = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];


 NSLog(@"%@",date.text); //App crashes at this line
       [date setTag:1];


        startTime = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Start Time"]]; 

        //setting tag and position of label
        [startTime setTag:2];
        CGRect labelpos =  startTime.frame;
        labelpos.origin.y = date.bounds.size.height + 2;
        startTime.frame = labelpos;

        NSLog(@"labels set");

   // Configure the cell...
    [[cell contentView] addSubview:date];
    [[cell contentView] addSubview:startTime];
    [[cell contentView] addSubview:duration];
    [[cell contentView] addSubview:cal];


    NSLog(@"A cell set");

    }      

    return cell;
}

任何人都可以告诉我,我做错了什么?我希望我的问题很清楚..

1 个答案:

答案 0 :(得分:9)

该行:

date = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];

应该是:

date.text = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];

否则,您的date指针将设置为NSString的实例,而不是设置其内容。

编辑:

正如danh正确指出的那样,startTime会遇到同样的问题。