我有一个NSMutableArray,它包含每个位置的类模型对象。 课程模型包含两种类型的信息,我们称之为 id 和名称。 因此,在我的NSMutableArray的每个位置,我都有一个包含2个信息的对象。
然后,在我的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方法中使用它,我试着写这个:( cm是我的类模型,myArray是包含cm类对象的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);
但这不起作用。可能因为我的数组中的每个元素都是一个对象? ..帮助!
答案 0 :(得分:0)
您有正确的基本想法,但不应尝试在cellForRowAt
中执行此操作。相反,您需要创建一个新数组,该数组包含所需结构中的数据,并使用该数组作为tableview的源。您还需要创建一个新类来放入数组;一个名称为id
和NSMutableArray
的名称(我不会显示此内容,但我会将其称为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.