我有一个带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
写的(这是我想要的,所以我可以使用)我的sortedName
和Artist
课程中也Genre
。
该属性确实存在,并且它可以自行运行:当我设置cell.detailTextLabel?.text = song.sortedName
时(在删除导致上述错误的引用之后),它会正确显示。
有没有办法让这项工作?
答案 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}}对象。