2016-09-09 2 views
0

Я понял, что вы можете создавать новые объекты (в swift 3), как это:CoreData - создание нового объекта - Почему вам не нужно его сохранять?

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

Это, кажется, это. Он сохраняет нового человека навсегда (я думаю, так, по крайней мере).

Зачем вам не нужно звонить saveContext() из AppDelegate. swift (или persistentContainer.viewContext.save(), который в основном такой же, верно?)?

Каждый раз, когда вы меняете entity, вам необходимо его сохранить. Почему это не так при создании нового entities?

Спасибо заранее!

+0

Как вы протестировали, что вам не нужно сохранять? – Wain

+0

Я использую книгу «Основные данные по учебникам». В одной главе это именно так. Кроме того, я протестировал его, убив приложение и перезапустив его (и я убедился, что данные не всегда вставлены при запуске приложения) – Quantm

ответ

1

Согласно вашим комментариям к вашему вопросу, вы звоните saveContext().

Зайдите в свой AppDelegate и зарегистрируйтесь applicationWillTerminate, saveContext().

Короче говоря, если вы хотите сохранения данных, то да, вам нужно позвонить saveContext()

+0

А, это имеет смысл. В книге говорится, что он сохраняется сразу после создания новых записей. Это немного вводит в заблуждение. – Quantm

+0

Он хранится в контексте немедленно, но он не сохраняется до сохранения. Также, если у вас есть «ManagedObjectContext», который является дочерним по отношению к основному контексту, то при сохранении дочернего элемента он будет сохранен в основном контексте. Но НЕ сохранялся, пока вы не сохранили этот главный контекст, поскольку это то, что связано с постоянным координатором. – Swinny89

+0

Да, но я уверен, что книга означала фактическую постоянную экономию, а не хранение. Вот почему я был смущен – Quantm

1

для Anser вы должны понимать стек базовых данных

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

Изменения, которые вы делаете к вашим управляемым объектам не привязаны к родительскому хранилищу, пока вы не сохраните контекст.

+0

Да, это то, о чем я думал. Но книга была чем-то обманчивым в этом отношении. Вот почему я задал этот вопрос здесь – Quantm