2016-09-09 14 views
0

私はあなたがこのように(swift 3に)新しいエンティティを作成することができます考え出し:CoreData - 新しいエンティティを作成する - これを保存する必要はありませんか?

let person = Person(context: persistentContainer.viewContext) person.name = "Some Name"

これはそれのようです。それは新しい人を恒久的に救う(私はそう思う、少なくとも)。

AppDelegateのsaveContext()に電話をかけてみませんか?スウィフト(またはpersistentContainer.viewContext.save()は基本的に同じ、右?)?

entityを変更するたびに、保存する必要があります。新しいentitiesを作成すると、これはなぜですか?

ありがとうございました!!!

+0

保存する必要がないことをどのようにテストしましたか? – Wain

+0

私は "チュートリアルによるコアデータ"という本を使用しています。 1つの章では、正確にこれが当てはまります。また、私はアプリを殺して再起動することでそれをテストした(そして、アプリ起動時にデータが必ず挿入されないようにした) – Quantm

答えて

1

あなたの質問によると、あなたはsaveContext()と呼んでいます。

AppDelegateにアクセスし、applicationWillTerminateを確認してください。saveContext()があります。要するに

、あなたがデータを永続化したい場合は[はい、あなたはANSERためsaveContext()

+0

ああ、これは意味がある。この本では、新しいエントリが作成された直後に保存されると述べています。それは少し誤解を招く。 – Quantm

+0

これはすぐにコンテキストに保存されますが、保存するまで永続化されません。また、メインコンテキストの子である 'ManagedObjectContext'を持つ場合、子を保存すると、メインコンテキストに保存されます。しかし、永続コーディネータに接続されているので、メインのコンテキストを保存するまで保持されません – Swinny89

+0

はい、私はかなり確信していますが、この本は保存ではなく実際の永続保存を意味していました。それが私が混乱した理由です。 – Quantm

1

を呼び出す必要がありますコアデータを理解する必要がありますあなたが作る

https://developer.apple.com/library/ios/documentation/DataManagement/Devpedia-CoreData/coreDataStack.html#//apple_ref/doc/uid/TP40010398-CH25-SW1

変更を積み重ねますコンテキストを保存するまで、管理対象オブジェクトへのアクセスは親ストアにコミットされません。

+0

はい、それも私が思ったことです。しかし、この本はこれに関して誤解を招くようなものでした。だから私はここでこの質問をした – Quantm

関連する問題