У меня есть приложение с двумя представлениями. Первый позволяет создать ряд сущностей в Core Data, а второй — отображать данные созданных сущностей.
В моих моделях данных CoreData у меня есть две сущности:
CD_AProduct
и CD_AProductItems
.
CD_AProduct
содержит необязательную связь с именем productItems, которая является CD_AProductItems
:
CD_AProductItems
содержит необязательную связь с именем product, ведь CD_AProduct
В классе AppDelegate
я создаю экземпляр Core Data Stack следующим образом:
MagicalRecord.setupAutoMigratingCoreDataStack()
Код первого просмотра
Затем в своем коде я впервые создаю четыре объекта CD_AProductItem и связываю отношения:
if let entity = CD_ProductItem.MR_createEntity() as? CD_ProductItem
{
product.addProductItemsObject(entity)
entity.product = product
success()
}
else
{
failure()
}
Затем я сохраняю объекты в постоянном хранилище:
NSManagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreWithCompletion({(successBlock : Bool, error : NSError!) in
if successBlock
{
success()
}
else
{
if error != nil
{
failure()
}
else
{
success()
}
}
}
)
Код второго представления
// Product is retrieved with CD_AProduct.MR_findFirstByAttribute
for productItem in product.productItems
{
println("productItem: \(productItem)")
}
Теперь, что не так с этим.
- Первый вид: пользователь «выбирает» 4 элемента продукта для добавления в продукт.
- Нажмите на верхнюю правую кнопку моего представления, чтобы перейти к следующему представлению.
- Второе представление: отображение данных о созданных 4 элементах продукта.
- Вернитесь на первую страницу, используя верхнюю левую кнопку моего представления.
- Первый просмотр: добавить еще 4 товарных позиции в мой товар
- Перейти на следующую страницу
- Второй вид: отображать только 4 товарных позиции вместо 8!
Я думаю, что эта проблема возникает из-за стека основных данных, который не обновляется, когда я перехожу ко второму представлению (тому, которое отображает данные выбранных элементов продукта).
Любые предложения о том, что происходит и как я могу быть уверен, что весь основной стек данных был обновлен, прежде чем перейти ко второму представлению?