2016-10-01 11 views
0

私はメインキューで動作するチャットアプリケーションを持っています。親キューがメインキューにある親子管理オブジェクトコンテキストを作成し、子はプライベートキューにあります。一度にたくさんのメッセージを送信すると、UIが少し減速するためです。(SWIFT 3)親子管理対象オブジェクトコンテキストを作成

私が持っている問題は、私が自動的にコアデータスタックを生成したことです。私は管理されたオブジェクトのコンテキストにアクセスする方法も知らない。誰かが私に始める方法について少しアドバイスをくれましたか?

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

あなたのUIのものとバックグラウンドタスクのためのpersistentContainer.performBackgroundTask(block:)ためpersistentContainer.viewContextを使用してください。

0

使用:代わりの

    persistentContainer.newBackgroundContext() 

    persistentContainer.viewContext() 

newBackgroundContextは()プライベート管理コンテキストを作成します。

これはコンテキストを作成する方法です。

var privateUserContext : NSManagedObjectContext { 
     get { 
      return userPersistentContainer.newBackgroundContext() 
     } 
    } 

そして、あなたはそれを使用するたびに、あなたはそれをこのように保存することができます。

    do{ 
         try privateUserMOC.save() 

        } 
        catch{ 
         print("Error") 
        } 

これは私のためにやった....幸運!

関連する問題