Как избежать Fetching Core Entity как Fault? - PullRequest
0 голосов
/ 20 декабря 2018

Во время экранных переходов у меня есть объект класса модели данных Core, который переходит от одного класса к другому.Но во время этого иногда его «ноль», и когда я пытаюсь записать его, я обнаружил, что он вернул ошибку.При получении я установил:

        fetchRequestObject.returnsObjectsAsFaults = false

Я новичок в основных данных.Ниже приведен журнал, когда я пытался напечатать объект:

    Optional<"MyEntity">
      - some : <ProjectName.MyEntity: 0x2822acdc0> (entity: "MyEntity"; id: 0x9ddeded1ada58e31 <x-coredata://27FC66FC-4FDF-4B40-9541-F4E90622906C/MyEntity/p34705> ; data: <fault>)

Много раз он печатал и прекрасно работал со своими атрибутами и значениями.Но в других случаях это "ноль".

1 Ответ

0 голосов
/ 20 декабря 2018

Я сталкивался с подобной проблемой

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

Но в этом случае я подозреваю, что происходит нечто более гнусное: CoreData создается локально в этом методе выборки, и я боюсь, что он освобождается (вместе со связанным managedObjectContext), как только метод завершается.Следовательно, ваш возвращаемый массив содержит NSManagedObjects из контекста, который был освобожден.Чтобы проверить, попробуйте сделать managedObjectContext свойством (глобальной переменной), а не локальной переменной .Этого должно быть достаточно, чтобы сохранить постоянную ссылку на контекст (который, в свою очередь, будет иметь сильные ссылки на базовый стек) и предотвратить его освобождение.

...