- [__ NSCFString objectForKey:]:发送到实例的无法识别的选择器

时间:2012-01-09 05:51:00

标签: iphone objective-c

// Configure the cell.
cell.textLabel.text = [[self.drinks objectAtIndex:indexPath.row] objectForKey:@"Name"];
return cell;

上面的代码正在生成此异常。可能导致这种情况的原因以及如何解决?

2 个答案:

答案 0 :(得分:2)

我对你的问题的理解

你有很多饮料,比如

Drink *d1 = [[Drink alloc] init]
d1.name = @"Drink1";
d1.price = [NSNumber numberWithFloat:25.0];

Drink *d2 = [[Drink alloc] init]
d2.name = @"Drink2";
d2.price = [NSNumber numberWithFloat:35.0];

OR

NSArray *values1 = [NSArray arrayWithObjects:@"Drink1",[NSNumber numberWithFloat:25.0], nil];
    NSArray *keys1 = [NSArray arrayWithObjects:@"Name",@"price", nil];
    NSDictionary *d1 = [[NSDictionary alloc] initWithObjects:values1 forKeys:keys1];

    NSArray *values2 = [NSArray arrayWithObjects:@"Drink2",[NSNumber numberWithFloat:55.0], nil];
    NSArray *keys2 = [NSArray arrayWithObjects:@"Name",@"price", nil];
    NSDictionary *d2 = [[NSDictionary alloc] initWithObjects:values1 forKeys:keys1];


self.drinks = [NSArray arrayWithObjects:d1,d2, nil];
[d1 release];
[d2 release];

从上述案例中

cell.textLabel.text = [[self.drinks objectAtIndex:indexPath.row] objectForKey:@"Name"];

以上陈述是正确的

您正在获取异常意味着,您正在将对象插入到drink数组中,该数组支持键值对数据,即字符串数据。

我希望你喜欢这个

self.drinks = [NSArray arrayWithObjects:@"Drink1",@"Drink2", nil];

在上述情况中,您必须使用

cell.textLabel.text = [self.drinks objectAtIndex:indexPath.row];

答案 1 :(得分:0)

首先尝试确定self.drinks是什么对象,

那么你可以更精细,具体取决于是否是一个带字典的数组?

做一个日志

  

[self.drinks objectAtIndex:0]

你看到了什么?