如何创建嵌套的字典数组

时间:2014-10-29 12:18:21

标签: ios objective-c

我目前在字典数组中有数据,如下所示:

Category    SubCategory    ItemID  ItemName  ItemDetails
Category 1  Subcategory 1  Item1ID Item1Name Item1Details
Category 1  Subcategory 1  Item2ID Item2Name Item2Details
Category 1  Subcategory 2  Item1ID Item1Name Item1Details
Category 1  Subcategory 2  Item2ID Item2Name Item2Details
Category 1  Subcategory 2  Item3ID Item3Name Item3Details
Category 2  Subcategory 1  Item1ID Item1Name Item1Details
Category 2  Subcategory 2  Item1ID Item1Name Item1Details
Category 2  Subcategory 2  Item2ID Item2Name Item2Details etc

数据需要是分层的,而不是表格式,因此有一个类别数组填充了子类别数组,这些子类别填充了最低级别数据的数组 - 项目信息(ItemID,ItemName,ItemDetails)。

鉴于每个类别都有一个名称(例如从上面 - 类别1)和一个子类别数组,每个子类别都有一个名称和一个项目数组,我认为它需要以下结构:

Category array
contains Dictionary with two keys:
a string with the category name
an array of subcategories

Subcategory array
contains Dictionary with two keys:
a string with the category name
an array of items

Item dictionary
is a dictionary with three keys:
ItemID, ItemName, ItemDetails

如何使用字典数组填充新结构?我已经在下面启动了一个for循环,循环遍历字典数组,但实际上不确定如何在正确的时间创建正确的对象,因为有三个级别的信息。

categories = [[NSMutableArray alloc] init];
for(ItemDictionary* i in ItemDictionaryArray)
{
      //create new category entry
      NSMutableDictionary *categoryDict = [[NSMutableDictionary alloc]initWithCapacity:2];
    [categoryDict setObject:[NSString stringWithString:currentCategory] forKey:@"Category"];
    [categoryDict setObject:subcategories forKey:@"Subcategories"];
    [categories addObject:categoryDict];
}

非常感谢任何帮助。
罗布

1 个答案:

答案 0 :(得分:0)

好吧花了一段时间才意识到没有任何方法可以实例化数组数组,这就是我无法在任何地方找到它的原因。您只需要将一个数组插入另一个数组中,就像它是任何其他类型的对象一样。所以我用来创建嵌套数组的代码是:

NSMutableArray *categories = [[NSMutableArray alloc] init];
for (int i = 0; i < numCategories; i++) {
  NSMutableArray *subcategories = [[NSMutableArray alloc] init];
  for (int j = 0; j < numSubcategories; j++) {
    NSMutableArray *items = [NSMutableArray alloc] init];
    [subcategories addObject:items];
  }
  [categories addObject:subcategories];
}