swift - 过滤 Realm 对象以仅按属性获取一个(不同的)对象

标签 swift realm distinct nspredicate

让我解释一下第一个原因,标题可能有点令人困惑。

假设我有一个 Movie 类型的 Realm 对象:

Movie1(id: 0, genre: "horror")

Movie2(id: 1, genre: "horror")

Movie3(id: 3, genre: "sci-fi")

我需要做的是获得每种类型的第一个(在本例中为 Movie1Movie3)

我想只使用realm + NSPredicate来实现不循环,因此性能更好,但我有点卡在那里.. .

到目前为止我得到的是这样的:

Realm().objects(Movie.self).sorted(byKeyPath: id, ascending: true)
.value(forKeyPath: "@distinctUnionOfObjects.genre") 

这会返回一个带有 ("horror", "sci-fi") 的数组,我真的不知道下一步应该是什么。如果我尝试做:

 .filter("genre IN %@", arrayWithDistinctGenres) 

它将返回我所有的对象。

可能很简单,但我不知道该怎么做。

感谢任何帮助。

最佳答案

从 Realm Swift 3.1 开始,您可以执行 let movie =realm.objects(Movie.self).sorted(by: ["id", true]).distinct(by: ["genre"]),它将使用不同操作之前应用的排序顺序选择每种类型的第一部电影

关于swift - 过滤 Realm 对象以仅按属性获取一个(不同的)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54106932/

相关文章:

ios - 更改其他 Swift 标志会导致构建错误

ios - 应用函数时 Swift exc_bad_access

react-native - React Native 和 Realm - 架构

mysql - 在 MySQL 中,如何选择第一次出现在多个列中的数字?

ruby-on-rails - 如何使用 arel/关系代数和 has_many :through 获取不同的值

java - 冒泡排序根据计数将重复项排序到不同列表中

ios - Swift iOS : Parsing of date from a string does not work for some devices. 太奇怪了

ios - INVoiceShortcutCenter.shared.setShortcutSuggestions(suggestions) 在 iOS 13 Beta 中崩溃。 Xcode 11 测试版

ios - RealmSwift 初始化器 : self used before super. 初始化调用

ios - Realm swift : How to implement the Object?