在我使用Realm和Swift编写的游戏中,我试图做这种关系;领域 - 从孩子的角度获取所有儿童父母的列表
Locomotive -> Engine <- Player
- 一个
Player
有许多Engines
- 一个
Locomotive
有许多Engines
一点题外话,玩家永远只能拥有一台发动机(孩子)从一个机车(父)。
我想获得玩家拥有的所有孩子的所有父母的列表,使用Realm和NSPredicates。
也就是说,给定一个玩家实体;列出玩家拥有的所有引擎的所有父母,并按成本对父对象进行排序。由于该应用程序并不直接知道哪个玩家拥有哪个火车头,我想对玩家拥有的引擎进行查询,以找出他们拥有的火车头。
当我们通过它的子对象来获取这些信息时,我觉得它在火车头实体中有两个关系(一个用于所有引擎,一个用于所有玩家)有点矫枉过正。
具体来说,我想要一个玩家拥有的所有机车列表,按发动机实体的成本排序。 (我希望这是有道理的)
我的项目的相关代码如下;
// Locomotive entity
public class Locomotive: Object {
var engines = List<Engine>()
private(set) dynamic var cost: Int = 0
}
// Engine entity
public class Engine: Object {
private let parents = LinkingObjects(fromType: Locomotive.self, property: "engines")
private let owners = LinkingObjects(fromType: Player.self, property: "engines")
}
// Player entity
public class Player: Object {
public let engines = List<Engine>()
}
// Give me a list of all locomotives I own through the engines entity
// and sort the locomotives by cost
let predicate = NSPredicate(format: "ANY engines.owners == %@", firstPlayer)
let allLocos = realm.objects(Player.self)
.filter(predicate)
print (allLocos.count)
虽然这给了我所有的引擎,玩家拥有的列表,它并没有给我的机车名单(或按成本排序)
因此,我的查询是:
我如何从玩家拥有的所有孩子中获取所有父母(机车)的列表,并确保排序顺序是按成本计算的?
我希望我已经正确解释了我的问题,并欢迎任何可能由我的查询产生的帮助和帮助。
感谢
顺便说一句,我能够从机车侧拿到名单,但之后我从玩家身边。 – zardon