2017-10-12 67 views
0

我有一個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因爲我陣列中的每個元素都是一個對象? .. 幫幫我!

回答

0

你有正確的基本想法,但你不應該嘗試在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')' –

相關問題