2013-06-11 3 views
1

Я использую MagicalRecord обрабатывать всю CoreData материал, который происходит и NSFetchedResultsControllers для отображения данных в TableViews и CollectionViews.Как найти «CoreData не смог выполнить ошибку» Exception

Проблема в том, что где-то в моем приложении у меня возникла проблема с исключением "CoreData could not fulfill a fault".

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

КПП. Я не сохраняя никакого managedObjects ... Это делает его еще более странно для меня ...

Любая помощь приветствуется

ответ

7

Эта ошибка возникает, когда ваш код (или MagicalRecord) сохраняет объект, который был удален CoreData в контексте управляемого объекта, обычно в другом потоке. Я хотел бы убедиться, что я не храню временные объекты или объекты, которые могут быть удалены как свойства, в коллекциях и т. Д. Поскольку вы упомянули, что этого не сделали, я бы удостоверился, что у меня нет кода потока, который может быть не синхронизирован, и, в конечном счете, я бы удостоверился, что MagicalRecord не имеет некоторых потоковых удалений фона или сбор мусора для классов отношений один-ко-многим или что-то подобное, что может вызвать проблему.

В качестве решения вы можете вручную проверить наличие ошибок, чтобы избежать сбоев. Посмотрите на этот вопрос, как это сделать: How can I tell whether an `NSManagedObject` has been deleted?

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

3

Может отходя от рамок третьей стороны, как MagicalRecord может помочь. Я испытал, что эти фреймворки мало ценят и потенциально создают хаос.

Я не думаю, что не сохранять управляемые объекты не имеет ничего общего с этим.

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