我有NSSet
个对象。
集合中的每个对象都是MyObject
的一个实例,其中包含一个名为name
的属性。
我有另一个NSArray
名为nameIndexes,其中包含名称值。
我希望有一个函数接受NSSet
并返回一个排序数组,该数组使用name属性根据其在nameIndexes数组中的位置进行排序。
修改
对不起我的误导,这是一个例子:
我有一组MyObject(可能不是同一个顺序):
MyObject1 {name:@"A"}
MyObject2 {name:@"B"}
MyObject3 {name:@"C"}
我有另一组名字:
{"B", "A", "C"}
我想要一个NSArray:
{MyObject2, MyObject1, MyObject3}
答案 0 :(得分:6)
NSSet *set = //your set.
NSArray *nameIndexes = //the array of names for sorting.
NSArray *result = [[set allObjects] sortedArrayUsingComparator:^NSComparisonResult(MyObject *obj1, MyObject *obj2) {
int index1 = [nameIndexes indexOfObject:obj1.name];
int index2 = [nameIndexes indexOfObject:obj2.name];
return [[NSNumber numberWithInt:index1] compare:[NSNumber numberWithInt:index2]];
}];
不是100%肯定你在问什么,但是这会排序取名字并将其变成一个排序数组,根据第二个数组中名字的索引排序。
修改后
编辑...确定,所以您的编辑完全改变了问题。无论如何,你可以从编辑中做到......
NSArray *result = [[set allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:"name" ascending:YES]]];
这将获取set并返回按字母顺序排列的对象的name属性排序的排序数组。