Realm Swift - 通过过滤关系来检索对象

时间:2016-02-16 18:56:00

标签: swift realm

这是我的问题......我环顾四周,尝试各种各样的东西,但它不起作用......当然没什么了不起但我被卡住了。

我有2个表:CategoryCompany。公司与类别有关系:dynamic var categoryRelation : Category?

它工作得很好我可以在RealmBrowser中看到我的记录。

但现在我想在按类别筛选的列表中显示我的公司。 首先,我通过segue将我的类别对象从CategoryViewController发送到CompanyViewController。工作正常我可以在另一边看到我的对象。

但是我应该如何使用filter()来过滤我的记录?如果我这样做:

var selectedCategoryId: Object?
var arrayOfCompanies = try! Realm().objects(Company)

override func viewDidLoad() {
    super.viewDidLoad()

    let predicate = NSPredicate(format: "categoryRelation == %@", self.selectedCategoryId!)
    arrayOfCompanies = arrayOfCompanies.filter(predicate)    
}

我的清单完全是空的。如果我取消过滤器,我会得到我的列表,但不会过滤,我的所有记录都会出现。

1 个答案:

答案 0 :(得分:0)

我将为您提供另一种解决方案,即#34;反向关系"。阅读this并试一试:

//find all Companies that have 'selectedCategoryId' as their categoryRelation property
let arrayOfCompanies = selectedCategoryId.linkingObjects(Company.self, forProperty: "categoryRelation")