来自plist的索引部分

时间:2014-04-28 16:47:23

标签: ios

我有一个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];
}

enter image description here

1 个答案:

答案 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包含嵌套数组或内容。如上所述,阵列数组也是可能的,