由于SIGABRT异常,无法在方法中更改UILabel文本。出了什么问题?

时间:2012-11-13 00:22:07

标签: objective-c ios exception uilabel

我正在创建一个自定义的UITableViewCell视图。我有一个UITableViewCell的方法,我已经以编程方式创建了UILabel memberLabel

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

static NSString * const cellIdentifier = @"cellMemberId";

CPNMemberCell *cell = (CPNMemberCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (!cell) {

    [[NSBundle mainBundle] loadNibNamed:@"TeamCell" owner:self options:nil];
    cell = baseCell;
}

memberLabel = [[UILabel alloc] initWithFrame:CGRectMake(32, 19, 183, 27)];
[cell addSubview:memberLabel];

NSString * const test = @"test input";
memberLabel.text = test;

  return cell;
}

所以这段代码效果很好。但是当我在MutableDictionary中将测试字符串值更改为包含JSON响应的字符串时,都失败了。我特意将该字符串输出到控制台日志,以确保它不是空的或其他什么。在分配期间我有一个除外 该字符串到UILabel:

NSString * const test = [members valueForKey:@"modelId"];
NSLog(@"Output: %@", test);
memberLabel.text = test;

我不明白什么是错的:响应正确地打印到控制台,UILabel正确显示文本字符串,就像在第一个代码块中一样,但当我尝试显示带有该响应的字符串时,我有一个{{1 SIGABRT中的异常。

1 个答案:

答案 0 :(得分:2)

检查test变量的数据类型是什么。使用:

NSLog(@"data type = %@", [[test class] description]);

打印data type = NSString吗?如果没有,那就是问题。

也试试这个,

NSString* test = [ _members valueForKey:@"modelId"];
NSLog(@"Testing response in the console: %@", test);
if ([test isKindOfClass:[NSString class]]) {
  memberLabel.text = test;
} else {
  NSLog(@"test is not a string"); 
}