【发布时间】:2018-06-11 16:47:53
【问题描述】:
我想像变量“Item2”类一样初始化“Item”类中的变量
这是“项目”类:-
import UIKit
import CoreData
import SwiftyJSON
class Item: NSManagedObject {
@NSManaged var name = String()
@NSManaged var symbol = String()
@NSManaged var checked : Bool = false
@NSManaged var buyPrice = String()
@NSManaged var rank = String()
}
这是“Item2”类:-
import Foundation
import SwiftyJSON
class Item2 : Codable {
var name = String()
var symbol = String()
var checked : Bool = false
var buyPrice = String()
var rank = String()
init(bitJSON: JSON) {
self.name = bitJSON["name"].stringValue
self.symbol = bitJSON["symbol"].stringValue
self.buyPrice = bitJSON["price_usd"].stringValue
self.rank = bitJSON["rank"].stringValue
}
}
【问题讨论】:
-
NSManagedObject实例必须使用init方法初始化,该方法将项目插入托管对象上下文中。基本上,Codable和自定义初始化程序可以在解码器的userInfo字典中传递托管对象上下文。 -
我使“Item”类可编码并从“Item2”类复制/粘贴init方法,但它说“@NSManaged 属性不能有初始值”
-
这(也)取决于核心数据模型的定义。但是你应该只根据模型声明
@NSManaged属性的类型而没有初始值 -
@vadian,您是否有将模型用作可编码模型的示例,我们可以将模型用于核心数据保存模型和 json 解析模型?我不想为代码数据实体和单独的模型对象创建自定义子类。我想为两者使用一 (1) 个模型类,它可以子类化可编码和 nsmanagedobject 或任何东西。在我们的旧项目中,我们使用了 2 个模型。在转换之前,我们使用 mapper 方法将 nsmanageobejct 转换为 nsobject(核心数据获取)和 nsobject 转换为 nsmanagedobejct(核心数据保存)。有几天我一直在为这样的例子而苦苦挣扎:(
标签: swift core-data swifty-json