我有一个由NSMutableArray
组成的NSString
。当我需要对它进行排序时,我会使用[array sortUsingSelector:@selector(caseInsensitiveCompare:)]
来完善它。
但有时我需要通过NSString
s的子串对数组进行排序。在这种情况下,子字符串在某个标记之后被定义为NSString
的一部分。事实上,标记可以在每个字符串中以不同方式定位。
显然,我可以将NSString
分解为2个对象并对它们进行排序,但这需要进行重大更改。
有没有办法使用类似于我上面描述的选择器进行排序?
我想如果没有,那么我可以通过创建数组的排序副本(而不是使用选择器来完成它)来排序,然后释放原始文件。
答案 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];
}];