2017-05-05 8 views
0

게임에서 나는 렐름과 스위프트를 사용하여 글을 쓰고 있습니다. 나는이 관계를하려고합니다.렐름 - 어린이 관점에서 모든 아이들의 모든 부모의 목록을 얻으십시오

Locomotive -> Engine <- Player

  • Player 많은 Engines
  • Locomotive이 많은 Engines

이 (!) 참고로, 플레이어는 오직 하나의 기관차에서 하나 개의 엔진 (아이를) 소유 할 수있다 (부모가).

플레이어가 렐름과 NSPredicate를 사용하여 소유하고있는 모든 아이들의 모든 부모의 목록을 얻고 싶습니다.

즉, 주어진 플레이어 엔티티; 플레이어가 소유하고있는 모든 엔진의 모든 부모를 나열하고 상위 개체를 비용별로 정렬합니다.

앱이 어떤 기관차를 소유하고 있는지 직접 알 수 없으므로 플레이어가 소유하고있는 엔진에 대해 자신이 소유하고있는 엔진을 쿼리하고 싶습니다.

기관용 엔티티 (모든 엔진에 대해 하나, 모든 플레이어에 대해 하나)에서 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) 

, 그것은 나에게 기관차의 목록을 제공 (또는 비용으로 분류)하지 않는

따라서 내 쿼리는 다음과 같습니다

플레이어가 소유하고있는 모든 아이들로부터 모든 부모 (기관차)의 목록을 얻고 정렬 순서가 비용인지 확인하려면 어떻게합니까?

내 문제를 올바르게 설명하고 내 쿼리로 인한 도움과 도움을 환영 할 것으로 기대됩니다.

감사

+0

는 덧붙여, 나는 기관차 측면에서 목록을 얻을 수 있어요,하지만 난 선수 측에서 후입니다. – zardon

답변

1

나는 Player 오브젝트를 지정해, 좋아, 당신이 Player 객체의 자식 인 Engine 개체의 부모 인 Locomotive 개체의 목록을 검색 할 것을 읽는다면.

Player 개체의 engines 속성을 사용하여 Locomotive 개체에 대한 조회를 수행 할 수 있어야합니다. (일반적으로 인정 하듯이,이 안된이지만) 그것은 다음과 같이 보일 것입니다 :

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

예, 현재이 방법을 사용하고 있습니다 (해당 버전). 나는 내가 반대 방향으로 갈 수 있는지보기 위해 시도하고 있었다. 그러나 그것은 조금 더 어려웠다.어쨌든; 나는 너의 대답을 받아 들일거야 – zardon

+0

멋지다! 감사! 잠깐, 그 반대로? 그래서 하나의'기관차'를 가지고'Engine' 객체를 공유 할 수있는'Player' 객체를 만들 때 처럼요? – TiM

+0

나를 무시하고 혼란스러워했다. 쿼리에서 언급했듯이 나는 플레이어 엔티티를 원했다. 플레이어가 소유하고있는 모든 엔진의 모든 부모를 열거하고 비용을 기준으로 부모 개체를 정렬하십시오. '나는 당신의 대답이이 문제를 해결한다고 믿습니다. – zardon