NSArray には ItemObject が含まれています。この ItemObject は ItemID に基づいてグループ化されていません
json のサンプルを以下に示します。 itemID の「a123」、「a124」に注意してください。n 個の itemID が存在する可能性があります。
[
{
"ItemName": "John",
"ItemID": "a123"
},
{
"ItemName": "Mary",
"ItemID": "a124"
},
{
"ItemName": "Larry",
"ItemID": "a123"
},
{
"ItemName": "Michel",
"ItemID": "a123"
},
{
"ItemName": "Jay",
"ItemID": "a124"
}
]
上記の応答は、次のように NSArray に格納されます。
NSMutableArray *itemArray=[[NSMutableArray alloc] init];
ItemObject *obj=[[ItemObject alloc] init];
obj.itemName=@"John";
obj.itemID=@"a123";
[itemArray addObject:obj]
.....
ItemObject *objN=[[ItemObject alloc] init];
objN.itemName=@"Jay";
objN.itemID=@"a124";
[itemArray addObject:objN].
これは、JSON に N 個のアイテムがある場合、N 個のアイテムの配列を作成することを示しています。
上記の項目は、UItableView で正しく表示されます。
ここで、それらを並べ替えて NSMutableArray グループに入れたい場合、消費するメモリ フットプリントが少なくなる最適なコーディング方法は何でしょうか。[つまり、並べ替え+グループ化]以下を達成しようとしています:
NSMutableArray *itemArray=[[NSMutableArray alloc] init];
at index 0: NSArray with itemID "a123"
at index 1: NSArray with itemID "a124"
利用可能な ItemId は動的であるため、説明したように、「N」個の itemId が存在する可能性があります。
ステップ 1: まず、利用可能な itemId を見つける必要があります。
ステップ2:
NSMutableArray *myArray=[[NSMutableArray alloc] init];
for(NSString *itemID in itemIDS){
NSArray *itemsForID=[itemArray filterUsingPredicate:[NSPredicate predicateWithFormat:"itemID MATCHES %@",itemID]];
[myArray addObject:itemsForID];
}
myArray は期待される結果です。ただし、filterUsingPredicate "N" 回を使用すると、時間とメモリが消費されます。
何でも、助けてください。