比方说,有一堂课Item
。它有许多属性,所有这些都存储在 CoreData 中。在 Swift 下有一个像这样的类初始化器:
convenience init(title: String, consistOf: String, price: Int, iconImage: NSData?, id: String, imageURL: String?) {
self.init(context: CoreDataHelper.shared.container.viewContext)
self.title = title
self.consistOf = consistOf
self.price = price
self.iconImage = iconImage
self.id = id
self.imageURL = imageURL
}
Objective-C 有一个原生的-(id)initWithContext:(NSManagedObjectContext *)moc
,但它初始化时没有属性,它不适合我。
如何编写正确的初始化程序以Item
在上下文和属性中创建对象?
我有上下文[CoreDataHelper sharedInstance].context
。
您提供的信息不足,无法为您提供完整的答案。毕竟,我们知道 CoreData 有 3 个选项用于为负责存储数据的类生成辅助代码:要么
NSManagedObject
为你生成负责表示存储在数据库中的数据的整个后代类,要么只生成一个单独的类别(扩展名),或者您自己创建将对象存储在数据库中所需的一切。我将只考虑第一种情况,如图所示:我建议您编写一个单独的函数(或静态类方法)来创建
Item
. 毕竟,您正在使用 Objective-C 编程,辅助初始化器不太适合您。简单地说,创建一个ItemGenerator
具有以下接口的辅助类:并添加创建对象的方法的实现
Item
:在必要的地方,调用生成的方法,如下所示:
将对象添加到上下文后,您可以立即测试应用程序的正确性:
如果您做的一切正确,那么在控制台中您将看到
title
所有已保存对象的字段值。