我目前在字典数组中有数据,如下所示:
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];
}
非常感谢任何帮助。
罗布
答案 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];
}