Переопределение языка пользователя для всего приложения, как правило, не считается хорошим способом навязывания локали для конкретной операции, поскольку предпочтения пользователя должны определять способ сортировки данных. Если, например, у вас есть языковой класс или иная намеренно-двухязыковая программа), вам может оказаться полезным переопределить порядок сортировки только для определенных элементов программы. Хотя это немного сложнее, если вам нужно убедиться, что конкретные строки всегда сортируются в зависимости от конкретной локали, вы должны использовать длинную форму сравнения:
- (NSComparisonResult)compare:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)range locale:(id)locale
Вы можете получить языковой стандарт для норвежского языка, позвонив по телефону:
NSLocale *noLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"no_NO"] autorelease];
Итак, вы в конечном итоге позвоните:
NSArray *sorted = [unsorted sortedArrayUsingComparator :^(id obj1, id obj2) {
NSRange theRange = NSMakeRange( 0, [obj1 length]);
return [obj1 compare: obj2 options: NSCaseInsensitiveSearch range: theRange locale: noLocale];
}];
Это не установит язык по умолчанию для остальной части программы, но будет явно использовать указанную локаль в этом конкретном сравнении.