2016-08-02 282 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

相关问题