2016-08-02 8 views
0

Ich versuche, Realm-Objekte zu sortieren. Der folgende Code sortiert alleSongs korrekt auf Titel mit den Buchstaben A-Z.Array nach Zeichenfolgenwert (Gebietsschema) sortieren in Realm - Swift

self.allSongs = realm.objects(Song.self).sorted("_title") 

Die Sache ist, dass ich Å, Ä und Ö (locale) einschließen muss. Der folgende Code funktioniert. Es sortiert die Lieder korrekt.

realm.objects(Song.self).sort { 
    $0.title.compare($1.title, locale: swedish) == .OrderedAscending 
} 

Das Problem ist, dass ich das Ergebnis nicht zu meinem Array von Songs zuweisen kann. Diese Zeile gibt mir einen Fehler: "Das Ergebnis des Typs [Song] kann nicht dem Typ" Ergebnisse "zugewiesen werden.

self.allSongs = realm.objects(Song.self).sort { 
    $0.title.compare($1.title, locale: swedish) == .OrderedAscending 
} 

Gibt es eine Möglichkeit, es auf den richtigen Typ zu konvertieren?

Antwort

0

Das Realm erlaubt keine systemspezifische Sortierung (siehe Ausgabe realm/realm-cocoa#2004). Die Art, die Sie verwenden, ist eine speicherinterne, die von der Swift-Standardbibliothek definiert wird (siehe SequenceType.sort()) und nicht die Realm-Version (siehe Results.sorted(_:)).

Sie können Swift.Array nicht in eine umwandeln, umwandeln oder umwandeln.

Wenn Sie die Funktionen Results wie automatische Aktualisierung und Lazy Loading nutzen möchten, müssen Sie eine normalisierte Zeichenfolge in Ihrem Modell speichern, um sie mit der Sortierung des Bereichs zu sortieren. Sie können sowohl Ihre normale Zeichenfolge als auch eine "normalisierte" Version in Ihrem Datenmodell speichern, in der Sie die Falzung vor dem Speichern des Werts in Realm durchführen, möglicherweise unter Verwendung von CFStringTransform. Sie könnten dann nach dieser Zeichenfolge suchen (auch Ihre Sucheingabe wird normalisiert).

+0

Schade, es gibt keine solche Funktionalität, aber trotzdem danke! – atlas

Verwandte Themen