将LinkingObjects视为列表

时间:2019-06-23 15:47:28

标签: ios swift realm

我有一个模型,该模型引用所有对象并引用其自身。我以为可以将LinkingObjects(fromType: Outfit.self, property: "clothes")这个属性用作List<Outfit>,然后直接将其修补到我的现有代码中。

具体地说,我需要使用observe的{​​{1}}函数。有什么方法可以将ListLinkingObjects一样对待?

1 个答案:

答案 0 :(得分:1)

让我举个例子吧-您可能正在向后看,或者我可能没有完全理解这个问题。

假设您有一个Outfit类,该类具有服装对象的List属性

OutfitClass: Object {
   let clothingObjects = List<ClothingClass>
}

,然后是一个类,其中包含每种服装类型以及返回到特定OutfitClass的链接。现在我们有了反比关系。

ClothingClass: Object {
   @objc dynamic var description = ""
   let outfits = LinkingObjects(fromType: OutfitClass.self, property: "clothingObjects")
}

因此,每个服装都有衣服,夹克,纽扣衬衫,领带等的列表,并且每个项目都将知道它属于哪个服装。

那应该满足模型(ClothingClass)的要求

  

引用自身的所有对象(OutfitClass)

我理解的目的是要向所有引用特定服装的Outfit对象添加观察者。例如:“红色领带服装类”对象要观察所有引用该红色领带的服装。

所以方法是这样的

首先,我们需要加载我们感兴趣的Clothing Class对象

let redTieResults = realm.objects(ClothingClass.self).filter("descripton == 'Red Tie'")

这里没有错误检查,但是我们假设红色领带一定存在

let thisRedTie = redTieResults.first!

现在让我们为列表中具有该特定红色领带对象的任何Outfit类对象获取结果,并向其中添加观察者

let outfitResults = realm.objects(OutfitClass.self).filter("ANY clothingObjects == %@", thisRedTie)

然后将观察者添加到服装结果