Я пытаюсь добавить базовые данные в существующее приложение, что нелегко, учитывая, что вся документация и каждое руководство начинаются с создания приложения, которое использует основные данные с самого начала.Поэтому я пытаюсь преобразовать существующий класс модели в основной объект данных.Вот что я сделал:
- Добавьте базовую структуру данных.
- Добавьте файл xcdatamodel.Он показал мне диалог, в котором я мог добавить существующий класс, поэтому я добавил свою модель.Затем я настроил атрибуты и сказал, что это за типы.
- Вместо генерации нового класса модели (поскольку у меня он уже есть), я создал тестовый проект, чтобы посмотреть, как он будет выглядеть, и скорректировал свой класс.чтобы соответствовать.Это включало в себя изменение его наследования от NSManagedObject, изменение моих свойств на динамическое, удаление вызовов выпуска и т. Д.
- Добавлены объекты Core Data в мой делегат приложения, следуя этому примеру.
В моем ViewController, где я использовал для размещения своей модели, я изменил ее на
MyModel *model = (MyModel*)[NSEntityDescription insertNewObjectForEntityForName:@"MyModel"] inManagedObjectContext:[delegate managedObjectContext];
Обратите внимание, что делегат - это ссылка на мой делегат приложения, объявленный ранее,Возможно, это не самый разумный способ сделать это.
После установки всех свойств у меня есть:
[[delegate managedObjectContext] save:&error];
Эта строка вылетает, и обратная трассировка говорит, что она находится внутри [NSSqlLiteConnection execute]
, о8 уровней внутри функции сохранения.Исключение составляет:
*-[NSConcreteValue UTF8String]: unrecognized selector sent to instance*
Что это за конкретное значение?И почему это называется, кем?Если это имеет значение, моя модель создания / сохранения кода находится внутри функции, которая является обратным вызовом для NSNotification.Это в отдельной теме?Я слышал, что managedObjectContext не является потокобезопасным.Но я не получаю ту же ошибку, которую ожидаю в этом случае.