我有一个带有 dynamic var title = ""
的 Realm 对象 Song
。我编写了一个计算属性 sortedName
来整理任何讨厌的前缀,例如“The”或括号和标点符号。我希望我的 RealmSearchViewController
使用 sortedName
作为它的 sortProperty
但这会引发错误:"Property 'sortedName' not found in object “歌曲”类型的
在谓词中使用 sortedName
时出现同样的错误(例如 if results.objects(with: NSPredicate(format: "sortedName BEGINSWITH %@", key)).count > 0
)
无论 sortedName
是写在我的 Song
类中还是写在 extension Object
中(这正是我想要的),我都会得到同样的行为为此,我还可以在我的 Artist
和 Genre
类中使用 sortedName
。
该属性确实存在,并且它自己工作:当我设置 cell.detailTextLabel?.text = song.sortedName
时(在删除导致上述错误的引用之后)它正确显示。
有没有办法让它工作?
最佳答案
不幸的是,目前只能使用非计算的、Realm 持久化的属性来查询 Realm 对象。
Realm 计划添加 a feature where it's possible to manually sort Realm objects with a block ,但目前还没有时间框架。
目前,您最好将 Results
中的对象复制到 Swift 数组并在其中对它们进行排序。这对性能有一点影响(因为这意味着必须预先访问所有 Realm 对象),但它可以让您对它们执行自定义排序。
或者。您可以通过将另一种类型的 Realm Object
添加到您的数据库来“缓存”已排序的顺序,该数据库维护一个控制这些对象顺序的 List
对象。
关于swift - 在谓词中计算属性,在 RealmSearchViewController 中作为 sortProperty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834998/