自定义NSManagedObjects

时间:2017-10-27 18:55:40

标签: swift core-data nsmanagedobject nsmanagedobjectcontext

我收到很多消息作为应用逻辑的一部分,我想存储到持久存储,我使用相同的核心数据,我创建了一个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检索对象并处理它。

我想知道我的上述方法是否正确,如果不是,则需要进行哪些更改。

0 个答案:

没有答案