我想在我的Stages dict中阅读并显示我的数组到tableview中。但是,我的应用程序崩溃并提供错误消息: * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFDictionary objectAtIndex:]:无法识别的选择器发送到实例0x4b43ee0'
我能够在Stages dict中显示数组的行数,但无法在表格单元格中显示名称。
下面是我的plist和代码。
Root(数组)
Item 0 (Dict) Project Name (String) Stage (Dict) Analysis (Array) Design (Array) Develop (Array) Implement (Array)
在我的viewDiDLoad方法中,我调用了
//course is a nsdictionary which is pass down from the previous view
stages = [course objectForKey:@"Stage"];
tableview方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSInteger rows = 0;
if (section == 0){
rows = 1;
}
if (section == 1) {
return [stages count];
}
return rows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"StagesCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
}
// Set up the cell
if (indexPath.section == 0) {
if (indexPath.row == 0) {
cell.textLabel.text = @"Project Name";
cell.detailTextLabel.text = [course objectForKey:@"ProjectName"];;
}
}
if (indexPath.section == 1) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
NSString *cellvalue = [stages objectAtIndex:indexPath.row];
cell.textLabel.text = cellvalue;
}
return cell;
}
提前致谢(:
答案 0 :(得分:0)
在plist文件中,项目名称变量如下所示:Project Name
,在此行中显示cell.detailTextLabel.text = [course objectForKey:@"ProjectName"];;
,如下所示:ProjectName
。我认为两者都必须相同。也许这只出现在这里。
出现错误是因为stage变量是一个字典,您可以在PList文件中看到,但是您尝试将其用作数组。我看到阶段字典包含4个键:分析,设计,开发,设计(奇怪,字典中的相同键???)。因此,您必须首先使用- (id)objectForKey:(id)aKey;
方法,使用Stages字典中的一个键,然后使用objectAtIndex:
方法。
答案 1 :(得分:0)
stages
元素是字典,而不是数组。我猜测字典中的每个元素都是数组对象,并且您希望在表视图中显示键。
此外,给出的plist似乎与示例不符。您在标有“课程”的词典中指定了Stage
,但在plist中,它会显示Stages
也许您想尝试:
stages = [[course objectAtIndex:@"Stages"] allKeys];
答案 2 :(得分:0)
NSString *cellvalue = [stages.allValues objectAtIndex:indexPath.row];
注意“allValues”。 allValues返回字典中所有值的数组, allKeys返回字典中所有键的数组。