UITableView Plist不返回valueForKey

时间:2010-09-23 00:28:36

标签: iphone objective-c xcode uitableview

我因为将一个分段的plist实现到UITableView而陷入困境。

我的plist设置如下。我有一个根数组,字典代表部分。这些字典有一个字符串'sectionname',它指示节标题以及里面的字典数组来表示单元格(原因是允许对单元格进行计数并且仍然有节标题。)

Root - Array
   Item 0 - Dictionary  
       sectionname - string - A
       RowsInSection - Array
          Item 0  - Dictionary
             name - string - Adam
          Item 1 - Dictionary
             name - string - Andrew
   Item 1 - Dictionary
       sectionname - string - B
       RowsInSection - Array
          Item 0 - Dictionary
             name - string - Belle
          Item 1 - Dictionary
             name - string - Bob
   Item 3 - Dictionary

[等等]。

现在,一切似乎都在工作,正确命名的标题就在那里,正确的行数在它们的部分下面。然而,行没有标签,对于我的生活,我无法弄清楚为什么。

我有一个plist的NSMutableArray

    libraryContent = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:libraryPlist ofType:@"plist"]];

因此,部分中的行数。

NSInteger count = [[[[doa libraryContent] objectAtIndex:section] valueForKeyPath:@"RowsInSection.@count"]intValue];
return count;

标题的标题。

return [[[doa libraryContent] objectAtIndex:section] objectForKey:@"sectionname"];

我试着用以下内容无济于事。

cell.textLabel.text = [[[doa libraryContent] objectAtIndex:indexPath.row] valueForKey:@"name"];

我还在学习,这种情况在不同的地方混合在一起。 'doa'方法链接到另一个声明'libraryContent'的文件。

你们有没有想过如何从plist中取出这些名字?或者其他任何我正在尝试的方法?

1 个答案:

答案 0 :(得分:0)

试试这段代码:

cell.textLabel.text = [[[[[doa libraryContent] objectAtIndex:indexPath.section] objectForKey:@"RowsInSection"] objectAtIndex:indexPath.row] objectForKey:@"name"];

<强> 修改
这样代码将更具可读性:

NSDistionary *sectionDataDict = [[doa libraryContent] objectAtIndex:indexPath.section];
NSArray *sectionRowsArray = [sectionDataDict objectForKey:@"RowsInSection"];
NSDictionary *rowDataDict = [sectionRowsArray objectAtIndex:indexPath.row];
cell.textLabel.text = [rowDataDict objectForKey:@"name"];