gpt4 book ai didi

swift - Realm - 从 child 的角度获取所有 child 的所有 parent 的列表

转载 作者:行者123 更新时间:2023-11-28 15:40:11 25 4
gpt4 key购买 nike

在我使用 Realm 和 Swift 编写的游戏中,我试图建立这种关系;

Locomotive -> Engine <- Player

  • A Player有很多Engines
  • A Locomotive有很多Engines

作为旁注,玩家只能拥有一个机车(父)的一个引擎(子)。

我想使用 Realm 和 NSPredicates 获取玩家拥有的所有 child 的所有 parent 的列表。

也就是说,给定一个玩家实体;列出玩家拥有的所有引擎的所有父对象,并按成本对父对象进行排序。

由于该应用程序不直接知道哪个玩家拥有什么机车,我想查询玩家拥有的引擎以找出他们拥有的机车。

当信息可以通过其子对象获得时,我觉得在机车实体中有 2 个关系(一个用于所有引擎,一个用于所有玩家)有点矫枉过正。

具体来说,我想要一个玩家拥有的所有机车的列表,通过引擎实体按成本排序。 (我希望这是有道理的)

我项目的相关代码如下;

// 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)

虽然这给了我玩家拥有的所有引擎的列表,但没有给我机车列表(或按成本排序)

因此我的查询是:

我如何从玩家拥有的所有子项中获取所有父项(机车)的列表并确保排序顺序是按成本排序的?

我希望我已经正确解释了我的问题,并欢迎从我的查询中获得的任何帮助和帮助。

谢谢

最佳答案

如果我没看错,给定一个 Player对象,您想检索 Locomotive 的列表Engine 的父对象Player 的子对象对象。

您应该能够对 Locomotive 进行查找使用 Player 的对象对象的 engines属性(property)。它看起来像这样(尽管不可否认,这是未经测试的):

let player = // Get the player
let locomotives = realm.objects(Locomotive.self).filter("ANY self IN %@", player.engines)

关于swift - Realm - 从 child 的角度获取所有 child 的所有 parent 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43801710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com