iphone swift - CoreData: ошибка: NULL _cd_rawData, но объект не превращается в ошибку





stack habr (4)


После перехода на несколько сообщений у этого был лучший ответ http://www.cocoabuilder.com/archive/cocoa/311615-weird-core-data-crash.html

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

У кого-нибудь есть опыт с этой ошибкой;

CoreData: error: NULL _cd_rawData but the object is not being turned into a fault

?




Причина:

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

Отлаживать:

Когда происходит сбой, выполните следующие действия:

  1. Проверьте поток, в котором произошел сбой (Xcode> Debug Navigator)
  2. На консольной печати тип параллелизма NSManagedObjectContext
  3. Если тип параллелизма - mainQueueConcurrencyType то он должен быть на основном потоке, иначе на потоках фона.

Команда консоли для проверки типа параллелизма:

p context.concurrencyType

В команде образца выше NSManagedObjectContext хранился в переменном context

Консольный выход:

(NSManagedObjectContextConcurrencyType) $R4 = mainQueueConcurrencyType



Я нашел ту же проблему, когда пытался читать (получить доступ) данные из хранилища Coredata в другом потоке (не основной).

Вы можете решить эту проблему, выполнив это предложение по этой ссылке:
Основные данные и потоки / Grand Central Dispatch




Я исправил ошибку, изменив строку «cacheName» NSFetchedResultsController на nil.

NSFetchedResultsController * aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: nil cacheName: @ "Root" nil ];







iphone core-data