我有一个 NSMutableArray
由 NSString
组成。当我需要对其进行排序时,我使用 [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/