ios - 根据一组有序字符串对 NSStrings 的 NSArray 进行排序

标签 ios objective-c sorting nsstring nsarray

我有一个 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/

相关文章:

ios - CoreData加密提交到应用商店时是否需要任何类型的额外文件

ios - iOS 10 特定日期重复本地通知

sorting - 反转 folder_contents 中的 Plone 默认排序顺序

ios - 如何集成 InAppSettingsKit?

ios 8 opengl es 1.1 停产了吗?

Objective-C 实例变量?

python - 按顺序抓取 URL

javascript - 页面加载后对内容进行排序

ios - UITableView 在滚动时重新加载数据

iphone - 如何通过关系访问 coredata 托管对象的有序列表?