2016-11-20 72 views
1

考虑下面的多个对象的对象,使用领域斯威夫特: 查找包含在领域

class Shelf : Object { 
dynamic var products: List<Product> 
} 

和:

class Product : Object { 
dynamic var string: String = "" 

let Shelves = LinkingObjects(fromType: Shelf.self, property: "products") 
} 

现在的问题是,是否有可能执行查询像:

“什么是包含产品A和产品B的所有货架?”

更一般的问题是如何查询包含其数组/列表属性中的对象子集的对象。

回答

3

首先,对于境界List属性正确的语法是:

class Shelf: Object { 
    let products = List<Product>() 
} 

除此之外,应该有可能在.filter方法使用点符号查询多个链接的对象的单父:

let shelves = realm.objects(Shelf.self).filter("ANY products.string = 'A' AND ANY products.string = 'B'") 

有关可以执行的查询类型的更多信息,请查看NSPredicate page on Realm's website