我有一个plist,我试图分成几个部分。我有一切设置,它正在工作,但我无法设置的一件事是numberOfRowsInSection
计数。目前它只显示第一部分'b'
,如图所示。
我遇到的问题是我使用plist来填充表,但无法计算出如下所示的节数。还需要按字母顺序对表进行排序。
// Find out the path of recipes.plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"laws" ofType:@"plist"];
// Load the file content and read the data into arrays
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
//Load Data into Array
self.tableData = [dict objectForKey:@"Laws"];
self.tableIndexData = [dict objectForKey:@"index"]; //containing the index
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// NSString *sectionTitle = [self.tableIndexData objectAtIndex:section];
// NSArray *sectionAnimals = [self.tableData objectForKey:sectionTitle];
return [self.tableData count];
}
答案 0 :(得分:0)
多节表通常是数组中的数组,或者是字典数组中的数组。很难看出代码中是否存在这种情况,因为对象的结构由@“Law”键入“从您展示的代码中看不出来。 (如果显示存储在plist中的数据,人们可以更轻松地帮助您)。
从您的代码对象@“Laws”似乎是一个数组(1级而不是数组数组或带有嵌套数组的字典。您的代码背叛了结构:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection (NSInteger)section
{
// NSString *sectionTitle = [self.tableIndexData objectAtIndex:section];
// NSArray *sectionAnimals = [self.tableData objectForKey:sectionTitle];
return [self.tableData count];
}
你需要做的是首先要有正确的结构(嵌套数组或带有嵌套数组的字典数组)
一旦你有了这个结构,tableviewNumberOfRowsInSection的代码对于具有嵌套数组的字典数组应该是这样的:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return ([font_family_array count]);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSDictionary *dictionary = [font_family_array objectAtIndex:section];
NSArray *array = [dictionary objectForKey:@"array"];
NSInteger count = [array count];
return (count);
}
然后设置节标题应该是以下内容:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSDictionary *dict = [font_family_array objectAtIndex:section];
NSString *title1 = [dict objectForKey:@"family"];
return (title1);
}
在下面的示例中,font_family_array是一个包含2个元素的字典数组 @family包含标题/标题,@ array包含嵌套数组或内容。如上所述,阵列数组也是可能的,