我需要一些有关领域快速查询的帮助。这是业务上下文:
有两种用户类型:
用户类型 1:展会经理
节目经理可以创建节目。您将在下面找到 Show 对象的必要详细信息。如您所见,每个节目都有一个属性 artistResponses,它是 ArtistResponse 的列表。
class Show: Object {
@objc dynamic var id = UUID().uuidString
@objc dynamic var createdDate = Date()
@objc dynamic var showManager: ShowManager!
@objc dynamic var venueName = ""
@objc dynamic var city = ""
...
**let artistResponses = List<ArtistResponse>()**
override static func primaryKey() -> String? {
return "id"
}
...
}
用户类型 2:艺术家
Artist 对象具有 cityOfInterest 属性,并且应用程序上的艺术家只应显示由演出经理创建的演出,其中演出城市位于艺术家的 cityOfInterest 中。然后,艺术家可以查看这些节目并做出回应,这将创建一个 ArtistResponse 对象并将其添加到上面在 Show 对象中看到的列表中。您将在下面找到 Artist 以及 ArtistResponse 对象的必要详细信息。
class Artist: Object {
@objc dynamic var id = UUID().uuidString
@objc dynamic var createdDate = Date()
**let citiesOfInterest = List<String>()**
}
class ArtistResponse: Object {
@objc dynamic var id = UUID().uuidString
@objc dynamic var createdDate = Date()
@objc dynamic var show: Show!
@objc dynamic var artist: Artist!
**@objc dynamic var available = true**
override static func primaryKey() -> String? {
return "id"
}
}
我遇到问题的查询与确定它是否是新节目有关(即艺术家没有与节目关联的 ArtistResponse 将他们自己列为可用或不可用)。
这是一个例子:
一位名叫 Bob 的节目经理创建了一个节目,其中 city = “Austin” 一位名叫 Jim 的艺术家的itiesOfInterest = [“Austin”, “Seattle”, “San Francisco”]
艺术家 Jim 进入应用程序,应该会看到演出经理 Bob 发布的这个新演出列表,因为 Jim 的 cityOfInterest 包含“Austin”,演出的城市等于“Austin”,并且没有与 Jim 相关的艺术家回复。
我研究并发现 Realm 中的列表存在限制。
https://forum.realm.io/t/predicate-to-search-in-field-of-type-list/733 https://github.com/realm/realm-cocoa/issues/5334
请帮助这个查询:
Realm.objects(Show.self).filter(“以某种方式确定artistResponses列表中没有与Jim相关的artistResponse”)
有人可以帮我吗?我希望我已经提供了足够的解释。