2016-05-03 30 views
1

私はこれに似たクラスを持っている:新しいライブ逆の関係と1対1の関係レルム

class Flight: Object { 

dynamic var flightNumber = "" 
dynamic var departureApt = "" 
dynamic var arrivalApt = "" 

dynamic var nextFlight : Flight? 
dynamic var previousFlight : Flight? 

} 

A「飛行」をnextFlightおよび/またはpreviousFlightを含んでいてもよいが、それは保証されません。私の目標は、フライトを照会し、それが別のフライト(親フライトの次または前のいずれか)の子であるかどうかを確認することです。レルム0.100前

私はこのコードを使用して親を取得した:

if let parent = flight.linkingObjects(Flight.self, forProperty: "previousFlight").first { 
     print("This flight has a parent flight: \(parent.flightNumber)") 
} 

私は今レルム0.100で同じことを達成する方法がわからないですし、いくつかのフィードバックを大好きです!

EDIT

私は今、私が望んでいた結果を達成することができましたが、私はそれはそれを行うための正しい方法であるかどうかわからないです。私は親にこの方法を見つけ変数を追加しました:

let parentForNext = LinkingObjects(fromType: Flight.self, property: "nextFlight") 
let parentForPrevious = LinkingObjects(fromType: Flight.self, property: "previousFlight") 

var parent : Flight? { 

    get { 

     return parentForNext.first ?? parentForPrevious.first ?? nil 

    } 

} 

答えて

1

Object.linkingObjects(_:property:)方法がレルムスウィフト0.100で廃止されました(詳細についてrelease postを参照してください)。

これは、レルム内の逆関係を宣言するためには、より強力な(ただし少し冗長ですが)モデルのLinkingObjectsプロパティタイプがあるからです。これにより、オブジェクトをライブのように振る舞わせることができます。ListプロパティまたはResultsクエリを自動更新します。したがって、戻ってくるオブジェクトは期限切れになることはないことを知っています。これは、他のすべてのタイプのレルムが自動的に更新されるため、特に重要です。また、逆関係をあたかも前方関係であるかのように照会することもできます(Listプロパティ)。だから、

あなたが0.100前にこれをしなかった場合:

let parent = flight.linkingObjects(Flight.self, forProperty: "previousFlight").first 

同等はこの0.100で、後で(モデルの)である:あなたの2番目のコードサンプルで

let parents = LinkingObjects(fromType: Flight.self, property: "previousFlight") 
var parent: Flight? { return parents.first } 

、あなたは「複数のを持っています

let nextParent = LinkingObjects(fromType: Flight.self, property: "nextFlight") 
let previousParent = LinkingObjects(fromType: Flight.self, property: "previousFlight") 
var parent: Flight? { return nextParent.first ?? previousParent.first } 

:両親は」はい、あなたが好きな方法でそれらを組み合わせて計算された性質を持つことができますレルムのドキュメントの逆関係について詳しくは、件名:https://realm.io/docs/swift/latest/#inverse-relationships