使用Realm Swift考虑以下内容:
class Shelf : Object {
let products = List<Product>()
}
和
class Product : Object {
let string: String = ""
let Shelves = LinkingObjects(fromType: Shelf.self, property: "products")
}
现在问题是,是否可以执行如下查询:
&#34;什么是完全符合特定产品清单的所有货架?&#34; (不多也不少)。
我找不到比较数组的方法。
编辑: 如果我尝试这样做:
let results = realm.objects(Shelf.self).filter("%@ == products",products)
我收到错误:
Invalid predicate:
Key paths that include an array property must use aggregate operations
谢谢。
答案 0 :(得分:1)
由于Object
继承自Equatable
,符合Object
这一事实,默认情}。如果NSObject
的元素符合Equatable
协议,则List
本身也符合该协议。
因此,您应该能够使用Equatable
函数比较List
个实例,还可以直接比较List<Product>
个对象。
但是,请注意==
会覆盖Shelf
功能,请参阅Realm object's Equatable is implementation。
如果您想进行自定义比较,可以自行覆盖Realm
功能。
编辑:我不认为可以使用==
的过滤方法完成此操作。但是,如果您不介意将数组作为结果而不是==
集合,则以下方法可以为您提供帮助。
Realm
以上代码已经在Playground中使用类似的类进行了测试,并返回了正确的结果。