在我使用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