2015-11-28 31 views
8

SwiftyJSONでは、オブジェクトをJSONからSwiftに変換できます。SwiftyJSON:オブジェクトをJSONに変換する

SwiftyJSONは戻ることができますか?すなわち、関係を持ってNSManagedObjectを取得し、それをJSONに変換しますか?

+1

です。SwiftyJSONはシンプルなjsonシリアライザ/デシリアライザです。あなたはそれに適したデータがあることを確認する必要があります。リレーションシップに関しては、シリアライズの準備が整っている(つまり、それを辞書または何らかのソートにする)ことはあなたの仕事です。あなたが求めているのは、Core DataとSwiftyJSONとの緊密な統合です。 –

+0

@ user1107173 JSONから管理オブジェクトを初期化する方法を教えてください。それは元に戻すことができます... – JAHelia

+1

@JAHelia私はあなたができるとは思わない。あなたはそれをJSONから変換し、マッピングを手動で行いました。 – user1107173

答えて

5

あなたはそれを行うことはできません。それはSwiftyJSONのためのものではありません。 SwiftyJSONはObjective-Cと比較してJSONの構文解析を改善するSwiftの機能を使用しているだけで、JSONへのシリアライズの価値はありません。

NSManagedObjectオブジェクトから辞書/配列を作成する必要があります。 JSON辞書に

let parameters = event.toJSON() // create Dictionary from NSManagedObject 

Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters, encoding: .JSON) 

シリアライズ - あなたはNSManagedObjectの2つのサブクラスがある場合 - EventEventActivityに1対多の関係を持っているActivityを、私は次のように行くだろう。そして、このようにJSONシリアライザでちょうどAlamofireを使用これは

extension Event { 
    func toJSON() -> Dictionary<String, AnyObject> { 
     return [ 
      "id": self.id, 
      "name": self.name, 
      "startDate": self.startDate.GMTFormatString, 
      "endDate": self.endDate.GMTFormatString, 
      "activities": self.activities.map({ $0.toJSON() }) 
     ] 
    } 
} 

extension Activity { 
    func toJSON() -> Dictionary<String, AnyObject> { 
     return [ 
      "id": self.id, 
      "name": self.name 
     ] 
    } 
} 
+0

ありがとうございます。それはどのように関係のために働くでしょう。私。 「アクティビティ」エンティティと多対多の関係を持つ「イベント」というエンティティがある場合。イベントには一連のアクティビティがあります。 – user1107173

+1

私はたぶんディクショナリで返す両方のクラスのための1つの直列化メソッドを持つ拡張を実装します。更新された投稿 –

+0

を参照してくださいまた、すべて私はすべての属性の展開を強制する必要があります。 return ["id":self.id!]値の1つがnilであればクラッシュするでしょうか? – user1107173

関連する問題