json - 如何使用 SwiftyJSON 初始化“抽象实体”CoreDataClass
问题描述
我的核心数据模型中有一个名为“用户”的抽象实体。我想初始化这个实体的一个实例而不将它保存到数据库中。因此我将其设置为抽象实体。
我希望这个实体类符合 JSONAble,因为我正在使用 SwiftyJSON 来简化事情。
为了符合要求,我必须实现 init 方法required convenience init?(dict: [String : Any])
。
这是该方法的样子:
required convenience public init?(dict: [String : Any]) {
let decoder = JSONDecoder()
guard let codingUserInfoKeyManagedObjectContext = CodingUserInfoKey.managedObjectContext,
let managedObjectContext = decoder.userInfo[codingUserInfoKeyManagedObjectContext] as? NSManagedObjectContext,
let entity = NSEntityDescription.entity(forEntityName: "User", in: managedObjectContext) else {
fatalError("Failed to decode User")
}
self.init(entity: entity, insertInto: nil)
let json = JSON(dict)
let userDictionary = json["user"]
id = userDictionary["id"].int32Value
phoneCode = userDictionary["countryCode"].stringValue
mobileNumber = userDictionary["mobileNumber"].stringValue
firstName = userDictionary["firstName"].stringValue
lastName = userDictionary["lastName"].stringValue
avatar = userDictionary["avatar"].stringValue
userRole = userDictionary["userRole"].int32Value
let dateString = userDictionary["dateAdded"].stringValue
if let date = dateString.asDate() {
dateCreated = date
}
}
运行此程序后,它无法解码用户并遇到我已经到位的 fatalCrash。
我仍然有点不确定抽象实体是如何被初始化而不被存储到数据库中的,也许如果我能找出为抽象实体设置 CoreDataClass 的正确方法,我就能找出我哪里出错了。
解决方案
推荐阅读
- javascript - React Native - 未定义将回调传递给自定义挂钩
- flutter - 有没有办法限制用户从 imagePicker.pickMultiImage() 中选择的图像数量?
- flutter - 用户按下时如何更改 BottomNavigationBarItem(child) 的背景颜色?不更改所有导航栏颜色
- python - 线程队列块主pyqt5 GUI窗口
- aws-lambda - 如果 JVM 使用 JIT 编译器,为什么基于 Java 的无服务器函数会冷启动?
- javascript - 如何在 React Native 中渲染图像中的二进制数据?
- javascript - 如何在 html 表单中设置选择选项的条件
- java - 如何制作单任务 FILO 后台线程?
- r - R“dataexplorer”包 - 获取设备控制错误
- node.js - fs.readFileSync 将 \r 添加到每个字符串的末尾