NSArray 里面有 ItemObject。这个 ItemObject 不是基于 ItemID 分组的
json 的示例如下所示:您会注意到 itemIDs "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" 次会耗费时间和内存。
任何,帮助赞赏。