Objective c 根据对象对NSMutableArray排序

Objective c 根据对象对NSMutableArray排序,objective-c,sorting,nsmutablearray,Objective C,Sorting,Nsmutablearray,我得到的JSON如下所示: "Array1": [ { "abc": "3_name", "id": 34, "order": [3] }, { "abc": "1_name", "id": 50, "order": [1] }, { "abc": "2_name", "id": 4, "order": [2] } ] 我不知道如何根据“顺序”对数组1进行排序,而“顺序”本身就是一个数组。请帮忙。

我得到的JSON如下所示:

"Array1": 
[
  {
    "abc": "3_name",
    "id": 34,
    "order": [3]
  },
  {
    "abc": "1_name",
    "id": 50,
    "order": [1]
  },
  {
    "abc": "2_name",
    "id": 4,
    "order": [2]
  }
]

我不知道如何根据“顺序”对数组1进行排序,而“顺序”本身就是一个数组。请帮忙。我不知道如何使用NSSortDescriptor或Objective-C中提供的任何其他方法对其进行排序。

您需要使用比较器进行排序,它看起来像:

id customCompare = ^(NSMutableDictionary * obj1, NSMutableDictionary * obj2) {
    return [obj1[@"order"][0] compare:obj2[@"order"][0]];
};

NSArray *sortedArray = [jsonData[@"Array1"] sortedArrayUsingComparator:customCompare];

其中,jsonData应替换为保存数组1的dict的正确名称。

您忽略了提到
比较:
方法需要存在于
数组1
中的对象,而不是调用
sortedarrayingselector:
的类中。这并没有考虑到您正在对一个字典数组进行排序,并且排序顺序在这些字典中的另一个数组上。@maddy为了清晰起见改为local comparator它仍然是完全错误的<代码>sortedArrayUsingSelector:不将块作为参数。而块的实现并不反映正在排序的数据。@rmaddy啊,捕捉得不错。已更新示例,使其与问题数据完全匹配。请尝试对该数组进行排序,以更新您的问题。@iOSDeveloper您使用“我的答案”使其正常工作了吗?