Непосредственное заполнение файла хранилища SQLite не поддерживается.Apple не документирует схему магазина sqlite и изменяет ее без предупреждения или уведомления.Если у вас есть прямой доступ к файлу хранилища sqlite за пределами Core Data, вы можете ожидать сбоя хранилища в какой-то момент по мере обновления ОС и SDK.
Ошибка A fetch request must have an entity
вызвана назначением значения nil
запросу на выборку, обычно это вызвано следующей строкой:
NSEntityDescription *alphaEntity=[NSEntityDescription entityForName:@"Alpha" inManagedObjectContext:aManagedObjectContext];
... возвращая nil
, потому что нетСущность с данным именем существует в любой из моделей управляемых объектов, загруженных данным контекстом.
Наиболее распространенной причиной является простая опечатка, например, указание @ "Alpha", когда фактическое имя сущности равно @ "Aleph", но это также может быть вызвано ошибкой загрузки правильного или любого управляемого объекта.модель.
Когда вы используете nil-сущность в запросе на выборку:
[aFetchRequest setEntity:alphaEntity];
... вы получаете ошибку.
Вы можете получить доступ к модели напрямую из контекста с помощью:
[[aMangedObjectContext persistentStoreCoordinator] managedObjectModel]
В свою очередь NSManagedObjectModel предоставляет множество методовчто вы можете использовать для запроса активной модели, например, entitiesByName
вернет словарь, ключами которого являются имена всех имен сущностей, известных модели.
Прямой доступ к модели может сказать вам, что происходит.Либо у вас есть опечатка, либо вы по какой-то причине не загрузили модель.