2016-08-02 286 views
0

我正在嘗試對領域對象進行排序。以下代碼使用字母A-Z在標題上正確排序allSongs。在Realm中對字符串值(區域設置)進行排序的數組 - Swift

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

事情是,我需要包括Å,Ä和Ö(語言環境)。以下代碼有效。它將歌曲正確排序。

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

問題是我無法將結果分配給我的歌曲數組。這一行給我一個錯誤:「不能分配類型[Song]的結果來輸入結果」。

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

有沒有辦法將它轉換爲正確的類型?

回答

0

領域本身不允許區分語言環境敏感排序(請參閱問題realm/realm-cocoa#2004)。您使用的排序是由Swift標準庫(請參閱SequenceType.sort())定義的內存內容,而不是Realm版本(請參閱Results.sorted(_:))。

您將無法重新分配或投射或將Swift.Array轉換爲RealmSwift.Results

如果您想從Results功能(如自動更新和延遲加載)中受益,則需要在模型上存儲規範化的字符串,以便使用Realm的排序進行排序。您可以將數據模型中的標準字符串與「標準化」版本一起存儲,在存儲Realm中的值之前執行大小寫摺疊,可能使用CFStringTransform。然後,您可以搜索該字符串(同時規範化您的搜索輸入)。

+0

太糟糕了,沒有這樣的功能,但無論如何感謝! – atlas

相關問題