можно отсортировать массив NSMutable из строк NSStrings по их подстрокам с помощью селектора (на месте)? - PullRequest
4 голосов
/ 20 октября 2011

У меня есть NSMutableArray, состоящий из NSString с.Когда мне нужно его отсортировать, я использую [array sortUsingSelector:@selector(caseInsensitiveCompare:)], который отлично работает.

Но иногда мне нужно отсортировать массив по подстрокам NSString s.Подстрока определяется в этом случае как часть NSString после некоторого маркера.Ситуация усложняется еще и тем, что маркер может располагаться по-разному в каждой строке.

Очевидно, я могу разбить NSString на 2 объекта и выполнить сортировку по ним, но это потребует значительных изменений.

Есть ли способ выполнить сортировку с использованием селектора, подобного тому, что я описал выше?

Думаю, если нет, то я мог бы отсортировать, создав отсортированную копию массива (вместоиспользуя селектор, чтобы сделать это на месте), затем выпустить оригинал.

1 Ответ

6 голосов
/ 20 октября 2011

Вы можете выполнить любую произвольно сложную сортировку, встроенную в 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];
}];
...