在我的 Realm 数据库中,我有 3 个对象:BodyPart
, Exercise
& Muscle
两者都是 BodyPart
和 Exercise
收藏了 Muscle
s,声明为 let muscles = List<Muscle>()
在他们的 Realm 定义中
我想做的是检索所有 Exercise
给定 BodyPart
的对象.在 SQL 中,我可能会按照以下方式做一些事情:
select e.*
from Exercise e
inner join ExerciseMuscle em
on e.ExerciseID = em.ExerciseID
inner join BodyPartMuscle bpm
on em.MuscleID = bpm.MuscleID
where bpm.BodyPartID = 1
那么在 Realm 中实现这一目标的最简单方法是什么?
最佳答案
如果我没理解错的话,你的模型看起来像这样:
class Exercise: Object {
let muscles = List<Muscle>()
}
class BodyPart: Object {
let muscles = List<Muscle>()
}
class Muscle: Object {
}
您想从给定的BodyPart
步行到与其共享Muscle
的Exercises
?
您可以使用 linkingObjects(_:forProperty:)
从 Muscle
实例返回到引用它的 Exercise
。它可能看起来像这样:
extension BodyPart {
var exercises: [Exercise] {
return muscles.flatMap { $0.linkingObjects(Exercise.self, forProperty: "muscles") }
}
}
关于ios - 基于联结表的 Realm IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742623/