2016-05-11 6 views
0

私はSwift 2.2 iOS 9.3.1と9.3.2(beta)iPhone 5sと6sを使用しています。iPhoneの再起動後にコアデータがデータベースを保持しない

iPhone 5sおよび9.3でシミュレータを実行すると、Core Dataは再起動後にデータベースを保持します。しかし、物理的なデバイス上で実行されていません。

私は、スウィフトと今のコアデータを学ぶために非常に簡単なアプリを作った。私は https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorialApples Core Data Programming guideのようなチュートリアルに従ってきました。

このSO Xcode Swift application deployed to iphone losses CoreData after iPhone rebootは、同じ問題のように見えますが、活動はほとんどありません。テーブルにもっと多くの情報を持ってくることが私の問題に役立つことを願っています。

私は、アプリがバックグラウンドで入力し終わると保存します。私はDataControllerでこの関数を呼び出して、期待されるテキストを出力していることを確認しています。

func saveContext() { 
     if managedObjectContext.hasChanges { 
      do { 
       try managedObjectContext.save() 
       print("DataController saveContext") 
      } catch { 
       let nserror = error as NSError 
       NSLog("Unresolved error \(nserror), \(nserror.userInfo)") 
       abort() 
      } 
     } 
    } 

私は、他の人が示唆しているようにドキュメントディレクトリに保存しています。

... 
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) 
... 

私は数時間のためにこれをグーグルで試してみたが、私は、これは起こるべき理由のまわりで私の頭をラップすることはできません。しかし、私のグーグルのスキルだけでは十分ではない、または私は明らかに見落としている。

答えて

1

私はこの機能を使用し、iphoneを再起動した後でも私のデータは残っています。

// Save data to CoreData 
func saveLocalUserProfile(variables, ....) { 
    // ---------------------------------------------- 
    // Create the core data object 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let managedContext = appDelegate.managedObjectContext 
    let entity = NSEntityDescription.entityForName("YourTable", inManagedObjectContext:managedContext) 
    let userProfile = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) 
    // ---------------------------------------------- 
    // Set datas 
    userProfile.setValue(variable, forKey: "varaible") 
    .... 

    // ----------------------------------------------- 
    // Save data into Core Data 
    do { 
     try managedContext.save() 
     print("Save ok") 
    } catch let error as NSError { 
     print("Could not save \(error), \(error.userInfo)") 
    } 
} 
+0

私は非常に異なったやり方をしているのがわかりません。この問題が解消されないかどうかを確認するために、さらに簡単なアプリを書くつもりです。また、iOSの以前のバージョンを搭載したiPhoneを見つけようとします。ありがとう。 – oey

関連する問題