Ios Swift中JSON的模型类和核心数据的相同类

Ios Swift中JSON的模型类和核心数据的相同类,ios,json,swift,class,core-data,Ios,Json,Swift,Class,Core Data,我有一个带有参数的类,例如NSObject的Carsubclass,我使用它就像使用简单模型一样: class Car { var model: String! init(json: JSON) { // ... parse JSON ... } } 我可以: 用init初始化; 将JSON数据解析到此模型; 然后在我的VC中使用这个类:添加数据,删除数据,等等。任何我需要的 我还想将此模型保存到核心数据,但出于此目的,我需要其他模型: cl

我有一个带有参数的类,例如NSObject的Carsubclass,我使用它就像使用简单模型一样:

class Car {
    var model: String!

    init(json: JSON) {    

        // ... parse JSON ...
    }
}
我可以:

用init初始化; 将JSON数据解析到此模型; 然后在我的VC中使用这个类:添加数据,删除数据,等等。任何我需要的

我还想将此模型保存到核心数据,但出于此目的,我需要其他模型:

class Car: NSManagedObject {
    @NSManaged var model: String!
}
这个类我不能用于解析和简单初始化

但是,我可以创建以下初始化器:

class Car: NSManagedObject {
    @NSManaged var model: String!

    init() {
        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let managedContext = appDelegate.managedObjectContext    
        let entity = NSEntityDescription.entityForName("Car", inManagedObjectContext: managedContext)

        super.init(entity: entity!, insertIntoManagedObjectContext: nil)
    }

    convenience init(json: JSON) {
        self.init()

        // ... parse JSON ...
    }
 }
然后我会像这样使用这个类:

var car = Car()
car.model  = "Toyota"
这是正确的解决方案吗? 如何使用一个模型满足所有需求?

只需使用NSManagedObject来表示汽车。在NSManagedObject子类中,创建一个名为populateFromJSONjson:[String:Object]的方法,那么您的创建只会稍微复杂一点:

let aCar = NSEntityDescription.insertNewObjectForEntityForName("Car", intoManagedObjectContext:context)
aCar.populateFromJSON(myIncomingJSON)
完成了

顺便说一句,调用super.initentity:entity!,insertIntoManagedObjectContext:nil不好,不会产生您想要的结果

您确实不希望覆盖NSManagedObject子类上的init方法。最好创建一个填充方法并使用指定的初始化选项。

只需使用NSManagedObject来表示汽车。在NSManagedObject子类中,创建一个名为populateFromJSONjson:[String:Object]的方法,那么您的创建只会稍微复杂一点:

let aCar = NSEntityDescription.insertNewObjectForEntityForName("Car", intoManagedObjectContext:context)
aCar.populateFromJSON(myIncomingJSON)
完成了

顺便说一句,调用super.initentity:entity!,insertIntoManagedObjectContext:nil不好,不会产生您想要的结果


您确实不希望覆盖NSManagedObject子类上的init方法。最好创建一个填充方法并使用指定的初始化选项。

这是一个解决方案,您实际上没有解释问题/未满足的需求…这是一个解决方案,您实际上没有解释问题/未满足的需求。。。