Я пытаюсь отсортировать список строк. Имена элементов могут быть практически любыми: от реальных имен, строк, дат и чисел.
Я нашел NSStringCompareOptions с помощью NSNumericSearch, которые работают достаточно быстро и хорошо работает:
[1,2,21,3,55,6] --> [1,2,3,6,21,55]
Но мои проблемы — это отрицательные числа
[1,2,3,-1,-4,-5] --> [-1,-4,-5,1,2,3]
Это неправильно.
Я знаю, что Apple говорит:
Числовое сравнение применяется только к цифрам в строке, а не к другим символам, которые имеют значение в числовом представлении, например знаку минус, запятой или десятичной точке.
Но мой вопрос в том, как этого добиться, потому что я знаю, что я не единственный, кто это делает.
РЕДАКТИРОВАТЬ:< /p>
Спасибо Нарендре Панди, но мой реальный случай немного сложен, поэтому его ответ не может быть использован здесь.
Итак, допустим, я иметь словарь с числами в качестве ключей и строками в качестве значений:
dic = {@1:@"123", @2:@"-123", @5:"MyName",...};
затем у меня есть массив объектов с идентификаторами.
array = @[{object with id 5}, {object with id 2},...];
и мне нужен отсортированный массив объектов по имени свойств.
NSStringCompareOptions comparisonOption = NSCaseInsensitiveSearch | NSNumericSearch;
array = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSString * name1 = [dic objectForKey:obj1.someId];
NSString * name2 = [dic objectForKey:obj2.someId];
return [name1 compare:name2 options:comparisonOption];;
}];
РЕДАКТИРОВАТЬ 2:
Может быть, мне следует заявить, что у меня есть решение, но оно в 4 раза медленнее, чем сортировка с NSStringCompareOptions
// CHECK IF IT IS NUMBER
NSNumber * number1 = [numberFormatter numberFromString:string1];
NSNumber * number2 = [numberFormatter numberFromString:string2];
//
// NSLog(@"NUMBERS : %@, %@", number1, number2);
if (number1 && number2) {
return [number1 compare:number2];
}
return [string1 compare:string2 options:comparisonOption];
Подробнее здесь: https://stackoverflow.com/questions/406 ... areoptions
Сортировка строки отрицательных чисел в iOS с помощью NSStringCompareOptions ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение