Objective c 我可以使用选择器(就地)按子字符串对NSStrings的NSMutable数组进行排序吗?

Objective c 我可以使用选择器(就地)按子字符串对NSStrings的NSMutable数组进行排序吗?,objective-c,xcode,nsstring,nsmutablearray,Objective C,Xcode,Nsstring,Nsmutablearray,我有一个由NSStrings组成的NSMutableArray。当我需要对它进行排序时,我使用了[array sortUsingSelector:@selector(caseInsensitiveCompare:)],这非常有效 但有时我需要按NSStrings的子字符串对数组进行排序。在本例中,子字符串定义为某个标记后面的NSString的一部分。事实上,标记在每个字符串中的位置都不同,这使得事情更加复杂 显然,我可以将NSString分成两个对象并对它们进行排序,但这需要进行重大更改 是否有

我有一个由
NSString
s组成的
NSMutableArray
。当我需要对它进行排序时,我使用了
[array sortUsingSelector:@selector(caseInsensitiveCompare:)]
,这非常有效

但有时我需要按
NSString
s的子字符串对数组进行排序。在本例中,子字符串定义为某个标记后面的
NSString
的一部分。事实上,标记在每个字符串中的位置都不同,这使得事情更加复杂

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

是否有一种使用选择器进行排序的方法与我上面描述的类似


我认为如果没有,那么我可以通过创建数组的排序副本(而不是使用选择器进行排序),然后释放原始数组来进行排序。

您可以使用NSMutableArray的以下命令执行任意复杂的排序:


马特,非常感谢你。我不知道这个功能。致以最良好的祝愿,维克多
[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];
}];