包含对象的NSMutableArray中的组元素

问题描述:

我有一个NSMutableArray,其中包含类似于此类的每个位置的类模型对象。 该模型包含两种类型的信息,我们将其称为id名称。 因此,在我的NSMutableArray的每个位置,我都有一个包含2个信息的对象。包含对象的NSMutableArray中的组元素

然后,在我的NSMutableArray的第一位置,我有

{ 
id = 1; 
name = "Dan"; //this is the first object in NSMutableArray 
} 

在NSMutableArray中的第二位置,我有:

{ 
id = 1; 
name = "Luca"; 
} 

在第三位置

{ 
id = 2; 
name = "Tom"; 
} 

依此类推。

好的,我的目标是在SNMutableArray内的各种对象之间创建相同ID的联合,但这太难了!

举例来说,如果我有:

{ 
id = 1; 
name = "Tom"; 
} 

{ 
id = 1; 
name = "Luca"; 
} 

{ 
id = 2; 
name = "Steve"; 
} 

{ 
id = 2; 
name = "Jhon"; 
} 

{ 
id = 3; 
name = "Andrew"; 
} 

的目标是:

{ 
id = 1; 
name = "Tom"; 
name = "Luca"; 
} 
{ 
id = 2; 
name = "Steve"; 
name = "Jhon"; 

} 
{ 
id = 3; 
name = "Andrew"; 
} 

任何想法?想cellForRowAtIndexPath方法中使用此,我试图写:(厘米是我的类模型和myArray的是包含厘米类的一个对象的NSMutableArray)

ClassModel *cm = [myArray objectAtIndex:indexPath.row]; 


NSMutableArray * resultArray = [NSMutableArray new]; 
NSArray * groups = [array valueForKeyPath:cm.ID]; 
for (NSString * groupId in groups) 
{ 
     NSMutableDictionary * entry = [NSMutableDictionary new]; 
     [insert setObject: groupId forKey: @ "groupId"]; 

     NSArray * groupNames = [array filteredArrayUsingPredicate: [NSPredicate predicateWithFormat: @ "groupId =% @", groupId]]; 
     for (int i = 0; i <groupNames.count; i ++) 
     { 
         NSString * name = [[groupNames objectAtIndex: i] objectForKey: @ "name"]; 
         [entry setObject: name forKey: [NSS string stringWithFormat: @ "name% d", i + 1]]; 
     } 
     [resultArray addObject: entry]; 
} 

NSLog (@ "% @", resultArray); 

但这并不work..maybe因为我阵列中的每个元素都是一个对象? .. 帮帮我!

你有正确的基本想法,但你不应该尝试在cellForRowAt中这样做。相反,您需要创建一个新数组,其中包含所需结构中的数据,并将该数组用作tableview的源。你还需要创建一个新的类来放入数组;一个有一个idNSMutableArray的名字(我不会让这一点,但我将其称之为GroupClassModel

使用类似:

NSMutableDictionary *groups = [NSMutableDictionary new] 
for (ClassModel *cm in array) { 
    GroupClassModel *gcm = groups[cm.id]; 
    if (gcm == nil) { 
     gcm = [GroupClassModel new]; 
     gcm.id = cm.id 
     groups[cm.id] = gcm 
    } 
    [gcm.names addObject:cm.name]; 
} 

NSArray *groupedName = [groups allValues]; 
// Finally, sort groupedName by id if that is required. 
+0

感谢您的回答!我只有一个问题:什么是'GroupClassModel * gcm'?我不明白 –

+0

这是一个新的对象类,您将需要创建一个名称数组而不是单个字符串。 – Paulw11

+0

好吧,现在我明白了!最后一个问题,如果我想用工会的字符串替换id,它是否工作呢?我有一个警告'实例方法'-add:'找不到(返回类型默认为'id')' –