1

这简直要把我逼疯了。我正在尝试制作一个简单的分组表,每当我运行它时,我都会收到此错误:

-[__NSCFConstantString objectAtIndex:]: unrecognized selector sent to instance 0x489c

这是抛出该行的代码(我将确切的行放在星号中):

-(UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *newSpecCell = @"newSpecCell";
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *key = [segmentArray objectAtIndex:section];
NSArray *names = [specsDictionary objectForKey:key];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:newSpecCell];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:newSpecCell];
}

cell.textLabel.text = [names objectAtIndex:row]; // <---
return cell;

}

根据我的逻辑,我要求objectAtIndex从数组中获取,但错误说我将其发送到常量字符串。

我已经尝试了一些东西(比如创建一个字符串,[names objectAtIndex:row]但它似乎没有任何区别。另外,如果我使用 NSLog 显示其中的值,names它会正确显示它们,所以我知道数组包含我需要的值。

4

1 回答 1

0

数组被错误填充的简单问题。感谢Maddy,我很快就明白了。

-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *newSpecCell = @"newSpecCell";
 NSUInteger section = [indexPath section];
 // NSUInteger row = [indexPath row];
 NSString *key = [segmentArray objectAtIndex:section];
 // NSArray *names = [specsDictionary objectForKey:key];
 NSString *values = [specsDictionary objectForKey:key]; //<--
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:newSpecCell];
 if (cell == nil) {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                              reuseIdentifier:newSpecCell];
}

cell.textLabel.text = values; //<--
return cell;
}

我只是删除了注释行并修改了 cell.textlabel.text,如图所示,一切都很好!

于 2012-10-22T01:46:41.357 回答