Тестирование базовых базовых данных? - PullRequest
1 голос
/ 13 февраля 2012

Я борюсь с основными данными. Я получаю печально известную ошибку «Не удалось вызвать назначенный инициализатор в классе NSManagedObject». Для новичка, который читает документацию, начатую из стандартного шаблона в Xcode 4.2, наличие / возникновение этой ошибки не имеет никакого смысла. Как может произойти сбой при инициализации управляемого объекта? Я не изменял свои сгенерированные классы из модели каким-либо образом. Это означает, что я не переопределял этот инициализатор по умолчанию (initWithEntity: insertIntoManagedObjectContext:) этих подклассов NSManagedObject. Почему бы это не было успешно названо?

Вся моя установка очень проста. У меня есть один контекст, один координатор магазина и одна модель. Это было настроено шаблоном. Я редактировал модель данных визуально, у меня там четыре объекта. Затем я сгенерировал четыре класса с динамическими свойствами. Теперь единственное, что я делаю, это передаю ссылку на контекст из AppDelegate в мой пользовательский ViewConttroller. В этом пользовательском ViewController я пытаюсь добавить новую сущность в контекст Core Data.

Существует ли какая-либо методология или набор шагов, с помощью которых я могу проверить, правильно ли инициализирован весь стек данных Core? Существует ли магазин, в порядке ли контекст?

     NSManagedObjectModel *managedObjectModel = [[managedContext persistentStoreCoordinator] managedObjectModel];

     NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:@"ComplexLocation"];
     currentComplexLocation = [[ComplexLocation alloc] initWithEntity:entity insertIntoManagedObjectContext:managedContext];

1 Ответ

2 голосов
/ 13 февраля 2012

Это означает, что я не переопределил инициализатор по умолчанию (initWithEntity: insertIntoManagedObjectContext:) этих подклассов NSManagedObject.Почему он не будет успешно вызван?

Проблема, на которую жалуется ошибка, заключается в том, что вы не вызвали назначенный инициализатор.Если вы создали подкласс NSManagedObject, вам нужно убедиться, что все инициализаторы вызывают этот метод.Если вы создаете экземпляр NSManagedObject, вам нужно сделать это, вызвав этот метод.

Обычно простой способ добавить объект в ваш контекст - это вызвать +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:].

В этом пользовательском ViewController я пытаюсь добавить новый объект в контекст Core Data.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...