2017-10-12 21 views
0

私はこのような各位置にクラスモデルのオブジェクトを含むNSMutableArrayを持っています。 クラスモデルには、idという名前のという2種類の情報が含まれています。 したがって、NSMutableArrayのすべての場所に2つの情報を含むオブジェクトがあります。オブジェクトを含むNSMutableArrayのグループ要素

そして、私のNSMutableArrayのの最初の位置に私はNSMutableArrayのの第二の位置に

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

を持って、私が持っている:第三の位置

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

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

など。

私の目標は、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のはセンチクラスのオブジェクトを含む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で試してみてください。むしろ、必要な構造のデータを持つ新しい配列を作成し、その配列をテーブルビューのソースとして使用する必要があります。また、配列に入れるために新しいクラスを作成する必要があります。答えを

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

ありがとう:idと名のNSMutableArray(私はこれを表示されませんが、私はGroupClassModelそれを呼び出します)

使用何か等を有する1!私は「GroupClassModel * gcm'とは何ですか?私は理解していません –

+0

新しいオブジェクトクラスは、単一の文字列ではなく名前の配列を持つ作成する必要があります。 – Paulw11

+0

さて、わかりました。最後の質問ですが、idをunionの文字列に置き換えるとしたら、それはとにかく動作しますか? 'Instance method 'という警告があります - add:'見つからない(戻り値の型は 'id'にデフォルト)' –

関連する問題