我有三个目标
class YearDatabaseModel: Object {
@Persisted var year: Int
@Persisted var months = List<MonthsDatabaseModel>()
override static func primaryKey() -> String? {
return "year"
}
}
final class MonthsDatabaseModel: Object {
@Persisted var id: String
@Persisted var media = List<Model>()
override static func primaryKey() -> String? {
return "id"
}
}
public class Model: Object {
@Persisted public var id: String
@Persisted public var type: String
}
我需要返回所有的年模型与过滤器嵌套的月。模型项目与他们的类型,例如只是返回模型项目的月份与类型=="音频"
我确实使用了这个SUBQUERY
,但它只是过滤年份列表,而不是过滤型号列表
let predicate = NSPredicate(
format: "SUBQUERY(months.media, $media, $media.type = %@).@count > 0",
"audio")
我不想获得领域结果,然后通过平面Map模型列表来过滤模型,我想使用领域查询功能从大模型中过滤嵌套对象
1条答案
按热度按时间fnvucqvd1#
由于深度和处理
Lists
,这是一个非常具有挑战性的查询,但子查询可能是最佳解决方案,除非您想利用高级Swift函数。我 * 认为 * 这将得到你的结果,但它是一个两部分的查询,目前的SwiftSDK没有一个(好的)实现子查询本身,所以我使用一个老学校NSPredicate结合较新的类型安全查询来获得结果
我们使用子查询来获取具有
Model
和type = "audio"
的所有月份MonthsDatabaseModel
然后,我们使用这些结果来获取在其列表中具有匹配月份的
YearDatabaseModel
。