Buduję aplikację w xcode4.3/Objective-C i napotkałem problem podczas próby sortowania NSMutableArray. Zapełnię go ciągami z bazy danych sqlite. Problem występuje w przypadku szwedzkich znaków å, ä i ö.Jak mogę posortować tablicę ciągów alfabetycznie, gdy łańcuch zawiera åäö?
Tablica uporządkowana powinna wyglądać mniej więcej tak: as, br, ol, st, år, ög, ös.
Ale kiedy używam selektora porównaj kolejność jest następująca: as, år, br, ol, ög, ös, st.
I kiedy używam localizedCompare, zmiana zamówienia na: as, år, br, ög, ol, ös, st.
Zgodnie ze starszymi wątkami, rozwiązanie localizedCompare powinno być rozwiązaniem, ale nie mogę sprawić, aby działało poprawnie. Jeśli korzystam z terminalu, aby uzyskać dostęp do bazy danych sqlite i wpisz ZAMÓWIENIE, otrzymam poprawny wynik. Czy mój problem mógł być związany z niektórymi ustawieniami w kodzie Xcode lub symulatorze iphone, ponieważ żaden z nich nie wyświetla prawidłowej kolejności? Lub jest zlokalizowaneCompare niewłaściwy sposób iść? Z radością przyjmuję wszelkie obejścia, o ile wykona to zadanie. Dzięki.
można podać kod, który służy to zrobić? – David
Chciałbym sprawdzić, czy 'localizedStandardCompare:' jest inny. W przeciwnym razie konieczne może być zaimplementowanie własnego komparatora (lub od tego, że wspominamy o SQLite DB ... jeśli używasz danych podstawowych, możesz pozwolić DB na sortowanie, ustawiając deskryptory sortowania w żądaniu pobierania). – rickster
Porównanie lokalne powinno działać, ale tylko wtedy, gdy twoje ustawienia narodowe (w twoim komputerze) są ustawione na Szwecję. Najdziwniejsze jest to, że jeśli loguję tablicę, słowa ze znakami specjalnymi nie są drukowane, ale są wyświetlane jako kody Unicode. Jeśli loguję poszczególne słowa, logują się poprawnie i we właściwej kolejności. – rdelmar