objective-c - 我可以使用选择器(就地)按字符串的子字符串对 NSMutablearray 进行排序吗?

标签 objective-c xcode nsstring nsmutablearray

我有一个 NSMutableArrayNSString 组成。当我需要对其进行排序时,我使用 [array sortUsingSelector:@selector(caseInsensitiveCompare:)] 效果非常好。

但有时我需要按 NSString 的子字符串对数组进行排序。在这种情况下,子字符串被定义为 NSString 的一部分,跟在某个标记之后。由于标记在每个字符串中的位置不同,事情变得更加复杂。

显然我可以将 NSString 分成 2 个对象并对它们进行排序,但这需要进行重大更改。

有没有一种方法可以使用类似于我上面描述的选择器进行排序?

我想如果没有,那么我可能会通过创建数组的排序副本(而不是使用选择器就地执行)来排序,然后释放原始数组。

最佳答案

您可以使用 NSMutableArray 的 sortWithOptions:usingComparator 执行任意复杂的内联排序。 :

[myMutableArray sortWithOptions:NSSortStable usingComparator:^NSComparisonResult(NSString* str1, NSString* str2) {

    // Scan for your marker in both strings and split on it...
    // Say you store the results in substr1 and substr2...
    return [substr1 caseInsensitiveCompare:substr2];
}];

关于objective-c - 我可以使用选择器(就地)按字符串的子字符串对 NSMutablearray 进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830229/

相关文章:

objective-c - 检测 NSColorWell 的更改选择

iphone - 删除核心数据中的重复对象 (iphone)

ios - 是否应该通过storyboard/xib添加可选 View ,然后以编程方式隐藏或添加? (良好做法)

objective-c - 如何将文件的内容存储到 NSString 中?

iphone - 当我尝试 +2.50 时,NSString 四舍五入到最接近的整数

ios - 处理 Facebook 用户照片的分页

iphone - 如何检测 "IAP crackers"?

c# - 购买失败,因为购买未正确初始化

iphone - 在 Adob​​e Air 的 iOS native 扩展中访问 ViewController

objective-c - NSString 字体大小特定于框架宽度