我有一个可在主队列上运行的聊天应用程序,我想通过创建父和子托管对象上下文来提高性能,其中父对象位于主队列中且子进程位于专用队列上。因为当我一次发送大量消息时,UI会慢一点!
我遇到的问题是我自动生成了我的coredata堆栈。我不知道如何访问我的托管对象上下文。有人可以给我一些关于如何开始的建议。
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Reveal_Swift_3")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
// MARK: - Core Data Saving support
func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
答案 0 :(得分:0)
使用persistentContainer.viewContext
作为UI内容,persistentContainer.performBackgroundTask(block:)
作为后台任务。
答案 1 :(得分:0)
使用:
persistentContainer.newBackgroundContext()
而不是:
persistentContainer.viewContext()
newBackgroundContext()创建一个私有托管上下文。
这是您创建上下文的方法:
var privateUserContext : NSManagedObjectContext {
get {
return userPersistentContainer.newBackgroundContext()
}
}
每次使用它都可以这样保存。
do{
try privateUserMOC.save()
}
catch{
print("Error")
}
这对我来说......祝你好运!