Iphone Core Data, отказывающий на Сохранении

Предположение, что Вы имеете отдельную проверку и сохраняетесь (т.е. сохраняет к базе данных), код, я сделал бы следующее:

  1. UI должен выполнить проверку. Не выдавайте исключения здесь. Можно предупредить пользователя к ошибкам и препятствовать тому, чтобы запись была сохранена.

  2. Ваша база данных сохраняет код, должен выдать исключения недействительного аргумента для неправильных данных. Имеет смысл делать это здесь, так как Вы не можете возобновить запись базы данных в этой точке. Идеально этого никогда не должно происходить, так как UI должен препятствовать тому, чтобы пользователь сохранил, но Вам все еще нужен он для обеспечения непротиворечивости базы данных. Также Вы могли бы называть этот код от чего-то другого, чем UI (например, пакетные обновления), где нет никакого подтверждения правильности данных UI.

14
задан kiyoshi 6 August 2009 в 03:55
поделиться

3 ответа

Проблема решена, хотя я не уверен, что устраняю настоящую основную причину. Ошибка была устранена, когда я добавил эту строку:

[managedObjectContext setRetainsRegisteredObjects:YES];

Куда я создаю managedObjectContext. Так что, я полагаю, это связано с удерживаемым счетом. Я предполагаю, что, возможно, переменные экземпляра будут частично или временно освобождены или что-то в этом роде, когда представлены модальные представления? Я не знаю. В любом случае эту ошибку устранили, программа теперь работает нормально.

9
ответ дан 1 December 2019 в 07:27
поделиться

Я видел много забавного поведения с CoreData на iPhone, которое было решено путем сброса содержимого и настроек в симуляторе iPhone.

0
ответ дан 1 December 2019 в 07:27
поделиться

Я знаю, что это старый, но у меня была та же проблема, поэтому подумал, что добавлю мое мнение о том, как я решил проблему, мое было вызвано ручным выпуском управляемого объекта в модальном представлении, я удалил вызовы выпуска, и все работает нормально :) в соответствии с документами вы не должны вручную пытаться освободить управляемые объекты в любом случае, поскольку контекст будет выглядеть после всего этого. Во всяком случае, это мой опыт, ищите в своем коде чрезмерно выпущенные значения.

0
ответ дан 1 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: