NSSet:返回一个NSArray对象,按每个对象的某些属性上的字符串列表排序?

hzx*_*zxu -1 objective-c nsarray nsset ios

我有一个NSSet对象.

集合中的每个对象都是一个MyObject带有属性的实例name.

我有另一个NSArray名为nameIndexes,其中包含名称值.

我想有一个函数,它接受NSSet并返回一个排序数组,该数组使用name属性根据其在nameIndexes数组中的位置进行排序.

编辑:

对不起我的误导,这是一个例子:

我有一组MyObject(可能不是相同的顺序):

MyObject1 {name:@"A"}

MyObject2 {name:@"B"}

MyObject3 {name:@"C"}
Run Code Online (Sandbox Code Playgroud)

我有另一组名字:

{"B", "A", "C"}
Run Code Online (Sandbox Code Playgroud)

我想要一个NSArray:

{MyObject2, MyObject1, MyObject3}
Run Code Online (Sandbox Code Playgroud)

Fog*_*ter 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]];
}];
Run Code Online (Sandbox Code Playgroud)

不是100%肯定你在问什么,但是这将排序取名称并将其转换为基于第二个数组中名称索引排序的排序数组.

编辑后

编辑...确定,所以您的编辑完全改变了问题.无论如何,从编辑你可以做...

NSArray *result = [[set allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:"name" ascending:YES]]];
Run Code Online (Sandbox Code Playgroud)

这将获取set并返回按字母顺序排列的对象的name属性排序的排序数组.