在谓词中的计算属性,以及RealmSearchViewController中的sortProperty?

时间:2017-05-07 18:14:08

标签: swift realm

我有一个带Song的领域对象dynamic var title = ""。我写了一个计算属性sortedName,它可以排除任何讨厌的前缀,例如""或括号和标点符号。我希望我的RealmSearchViewController使用sortedName作为sortProperty,但这会引发错误:"Property 'sortedName' not found in object of type 'Song'"

在谓词中使用sortedName时出现同样的错误(例如if results.objects(with: NSPredicate(format: "sortedName BEGINSWITH %@", key)).count > 0

无论sortedName是在我的Song课程中写的,还是用extension Object写的(这是我想要的,所以我可以使用)我的sortedNameArtist课程中也Genre

该属性确实存在,并且它可以自行运行:当我设置cell.detailTextLabel?.text = song.sortedName时(在删除导致上述错误的引用之后),它会正确显示。

有没有办法让这项工作?

1 个答案:

答案 0 :(得分:5)

不幸的是,目前,查询Realm对象只能通过非计算的,Realm持久化属性来完成。

Realm中有计划添加a feature where it's possible to manually sort Realm objects with a block,但目前还没有时间框架。

目前,您最好将Object中的对象复制到Swift数组并在那里对它们进行排序。它有点性能(因为它意味着必须预先访问所有Realm对象),但它可以让你对它们进行自定义排序。

可替换地。您可以通过向数据库添加另一种类型的Realm List来“缓存”已排序的排序,该数据库维护一个控制这些对象排序的{{1}}对象。