2015-11-28 5 views
1

Я хотел бы сериализовать JSON в Core Data Model Objects и обратно и вперед. Я перехожу из RestKIT в Alamofire и Swifty JSON. Я знаю, что есть библиотеки, которые это предоставляют, но я хотел бы знать, как это сделать изначально?Swift 2: Натурально сериализуйте объекты модели JSON для Core Data

Ниже Настройка основных данных:

enter image description here

Event + CoreDataProperties.swift

import Foundation 
import CoreData 

extension Event { 

    @NSManaged var id: NSNumber? 
    @NSManaged var name: String? 
    @NSManaged var realRame: String? 
    @NSManaged var notes: NSSet? 

} 

Event.swift

import Foundation 
import CoreData 

class Event: NSManagedObject { 
// Insert code here to add functionality to your managed object subclass 
} 

Примечания + CoreDataProperties.swift

import Foundation 
import CoreData 

extension Notes { 

    @NSManaged var id: NSNumber? 
    @NSManaged var name: String? 
    @NSManaged var event: Event? 

} 

Notes.swift

Фонд импорта импорта CoreData

класса Примечания: NSManagedObject { // Вставьте код здесь, чтобы добавить функциональность управляемого объекта подкласс }

Ниже получен JSON :

{ 
    "id": "5555", 
    "name": "Superman", 
    "realName": "Clark Kent", 
    "notes": [ 
     { 
      "id": "2", 
      "name": "Order Flowers" 
     }, 
     { 
      "id": "3", 
      "name": "Pick up Laundry" 
     } 
     { 
      "id": "4", 
      "name": "Get Chinese Food" 
     }, 
    ] 
} 

Код: для получения JSON:

Alamofire.request(fetchData(param)).responseJSON { (response) in 

     switch response.result { 
     case .Success: 
      if let value = response.result.value { 
       let json = JSON(value) 
      } 
     case .Failure(let error): 
      print("Request failed with error: \(error)") 
     } 
    } 

Вопрос: Я не уверен, куда идти отсюда. NSJSONSerialization, похоже, хочет данные в формате NSData.

Пример кода был бы весьма признателен.

+0

Если вы получаете ответ в формате JSON, то вы можете непосредственно хранить его в NSMutableDictionary и значение доступа, используя пару ключей значение. Зачем вам нужно использовать NSJSONSerialization? –

+0

Я использую SwiftyJSON для преобразования из JSON в объекты. Как мне вернуться назад? – user1107173

ответ

0

Добавить новый класс DBManager:

class DBManager: NSObject { 
var managedObjectContext:NSManagedObjectContext! 
var managedObjectModel:NSManagedObjectModel! 

func insertData(jsonObj: AnyObject) { 
      let entity = NSEntityDescription.entity(forEntityName: "Event", 
                in:managedObjectContext) 
      let obj = NSManagedObject(entity: entity!, 
              insertInto: managedObjectContext) 

      obj.setValue(String((jsonObj.value(forKey: "id"))!) , forKey: "id") 

.... 

Продолжите настройку значения для других атрибутов.

Объявите это вар в AppDelegate:

var objDb = DBManager() 

Добавить

switch response.result { 
     case .Success: 
      if let value = response.result.value { 
       let json = JSON(value) 

       let anyObjects: AnyObject = json as! AnyObject 
       let appDelegate = UIApplication.shared().delegate as! AppDelegate 
       appDelegate.objDb.insertData(jsonObj: anyObjects) 
      } 
     case .Failure(let error): 
      print("Request failed with error: \(error)") 
     }