我收到很多消息作为应用逻辑的一部分,我想存储到持久存储,我使用相同的核心数据,我创建了一个NSManagedObject子类,它代表我的模型中的消息实体。我想知道创建对象并保存它的最佳方法是什么, 1.将创建并保存对象 2.将检索,更新和保存对象。
我想确保在保存对象时使用相同的托管上下文,当前应用程序面临随机冻结或崩溃,我怀疑是由于上下文使用不当。下面是如何创建和保存对象。
class MessageFactory: NSObject {
static func createMessage(state:Int,type:MessageType) -> Message {
let appDelegate = AppDelegate.shared()
let context = appDelegate.persistentContainer.viewContext // persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Message", in: context)
let message = Message(entity: entity!, insertInto: context)
message.setup(state:state,type:type)
return message
}
}
class Message : NSManagedObject {
var currentState: MessageState?
@NSManaged var type : String
@NSManaged var duration : String
@NSManaged var mediaUrl : String
func save() -> Bool {
do {
try self.managedObjectContext?.save()
return true
}
catch {
return false
}
}
}
此外,我也将此对象传递给少数函数,在那里修改它们并保存。
当我将此对象传递给闭包时,我传递其ID并使用闭包内的ID检索对象并处理它。
我想知道我的上述方法是否正确,如果不是,则需要进行哪些更改。