我有一个 NSArray
,其中包含一些 NSString
对象。例如:
NSArray *objects = @[@"Stin",@"Foo",@"Ray",@"Space"];
现在我需要根据以下字符串顺序对该数组进行排序。
NSArray *sortOrder = @[@"John",@"Foo",@"Space",@"Star",@"Ray",@"Stin"];
所以答案应该是
NSArray *sorted = @[@"Foo",@"Space",@"Ray",@"Stin"];
我怎样才能做到这一点?
回答: 基于 dasblinkenlight 的已接受答案,我做了以下操作,它很有魅力。
NSMutableArray *objects = @[@"Star",@"Stin",@"Foo",@"Ray",@"Space",@"John"];
NSArray *sortOrder = @[@"John",@"Foo",@"Space",@"Star",@"Ray",@"Stin"];
[objects sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
int index1 = [sortOrder indexOfObject:obj1];
int index2 = [sortOrder indexOfObject:obj2];
if (index1 > index2)
return NSOrderedDescending;
if (index1 < index2)
return NSOrderedAscending;
return NSOrderedSame;
}];
最佳答案
创建 NSComparator
保存对超集数组的引用,并通过比较两个字符串上调用 [superset indexOfObject:str]
的结果来决定字符串的相对顺序.调用 sortedArrayUsingComparator:
传递 NSComparator
的实例以获得所需的顺序。
关于ios - 根据一组有序字符串对 NSStrings 的 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458292/