我可以使用选择器(就地)通过其子串对字符串的NSMutablearray进行排序吗?

时间:2011-10-20 01:43:02

标签: objective-c xcode nsstring nsmutablearray

我有一个由NSMutableArray组成的NSString。当我需要对它进行排序时,我会使用[array sortUsingSelector:@selector(caseInsensitiveCompare:)]来完善它。

但有时我需要通过NSString s的子串对数组进行排序。在这种情况下,子字符串在某个标记之后被定义为NSString的一部分。事实上,标记可以在每个字符串中以不同方式定位。

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

有没有办法使用类似于我上面描述的选择器进行排序?

我想如果没有,那么我可以通过创建数组的排序副本(而不是使用选择器来完成它)来排序,然后释放原始文件。

1 个答案:

答案 0 :(得分:6)

您可以使用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];
}];