swift - 在谓词中计算属性,在 RealmSearchViewController 中作为 sortProperty?

标签 swift realm

我有一个带有 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 中(这正是我想要的),我都会得到同样的行为为此,我还可以在我的 ArtistGenre 类中使用 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/

相关文章:

ios - swift 4 : trying to load PDF from Data

swift - Realm Swift 后台搜索

unit-testing - 使用 Robolectric 和 PowerMock 进行 Realm 单元测试,代码覆盖率为零

ios - 如何在 Realm 中使用 < 或 <= 运算符搜索对象?

swift - Swift Process 对象的参数问题

swift - 如何在 Swift ReactiveCocoa 4 中从 MutableProperty<U> 创建 MutableProperty<T>

swift - 有没有办法独立于我的应用程序在 macOS 上跟踪鼠标移动?

java - 如何根据深层嵌套对象内的字段对 Realm 进行排序?

ios - 链接多对多的对象应该都写在 Realm 中吗?

ios - 如果 CollectionView 项目集成了另一个 CollectionView,则无法选择该项目