2016-05-25 4 views
3

CoreDataで一部のデータを保存する必要があります。一般的に問題は全くありません。問題は、データがEVReflectionで作成され、クラスEVObjectを継承するということです。収集したデータをCoreDataに保存するには、NSManagedObjectも継承する必要があります。問題は、迅速に複数のクラスを継承することができないということです。任意のヒントをありがとう。CoreDataを使用してEVObjectを保存する

class Device : EVObject 
{ 
    var channel : [Channel] = [Channel]() 
    var name : String = "" 
    var ise_id : Int = 0 
    var unreach : Bool = false 
    var sticky_unreach : Bool = false 
    var config_pending : Bool = false 

    override internal func propertyMapping() -> [(String?, String?)] { 
     return [("name", "_name"), ("ise_id", "_ise_id"), ("unreach", "_unreach"), ("sticky_unreach", "_sticky_unreach"), ("config_pending", "_config_pending")] 
    } 
} 

答えて

0

注EVReflectionは認識していませんが、この回答は一般的に適用できると思います。

多重継承を使用しないでください。 2つの別々のクラスと、あるオブジェクトを別のオブジェクトから作成/読み込み/更新するためのメカニズムが必要です。プロトコルは、それはあなたが安全な方法でキー名を知ることができれば、おそらくvalueForKey(_:)setValue(_:forKey)を使用して翻訳定型を(最小限に抑える方法で行われることを可能にする。

をそれもさえNSManagedObjectのサブクラスを持っている必要がすることはできませんが、

+0

だから私は、新しいクラスを作成する必要があり、それらの間にアクションをマップよりも? これは本当に不便なようです。いくつかのxmlデータを1つのクラスにダウンロードして、永続ストレージに保存するために同じプロパティを持つクラスにデータをコピーする必要があります。 EVReflectionがxmlからオブジェクトを作成するために使用するクラスを追加しました。 –

+0

NSManagedObjectを使用していないのが最善の方法ですが、データモデル内のリレーションを取得することはできません。 –

+0

NSManagedObjectをサブクラス化する必要はありませんが、EVObjectにインスタンスを持つことができます。 KVC( 'valueForKey'、' setValueForKey')が気に入らなければ、データモデルからNSManagedObjectクラスを生成できます。 DBからの保存/ロードに使用できるメインオブジェクトにインスタンスがまだ添付されています。 –

0

これは、EVReflectionから使用したい機能に依存します。NSManagedObjectには基本クラスとしてNSObjectがあるため、ほとんどの関数を使用することができますEVObjectの代わりに基本クラスとしてNSManagedObjectを設定するだけです。

唯一のthi EVObject関数を直接呼び出すのではなく、そのEVObjectメソッドにあるコードスニペットを実装する必要があります。ほとんどの関数は、対応するEVReflection関数を呼び出す便利なメソッドです。

今後ご質問がある場合は、GitHubの問題として報告してください。

関連する問題