NSArray 中有 ItemObject。此 ItemObject 未根据 ItemID 分组
json 的示例如下所示: 您会注意到项目 ID“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"次会消耗时间和内存。
任何帮助表示感谢。
最佳答案
你能试试下面的代码吗?
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"itemID" ascending:YES];
[itemArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
关于objective-c - NSMutableArray 排序和分组内存优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895891/