Как мне импортировать экземпляры объектов в данные Core? - PullRequest
0 голосов
/ 05 февраля 2012

Я создал пользовательский класс LocationGenerator, который использует CoreLocation и обратное геокодирование, и генерирует (когда требуется) пользовательский объект Location.Мой пользовательский объект Location имеет две переменные экземпляра - Address и GPS ... оба указывают на экземпляр двух пользовательских классов - Address - это набор строк, а GPS - три числа с плавающей точкой - широта, долгота и высота.

Location =Адрес + GPS

Чтобы это работало, мне нужно было создать три пользовательских класса - Местоположение, Адрес и GPS, все со значениями по умолчанию, установленными в их соответствующих методах инициализации.

Затем я перешел на Core Data.В модели у меня есть эти объекты - Item, Location, Address и GPS.Элемент Item имеет несколько простых строковых свойств и отношение Location.Объект местоположения имеет отношение адреса и GPS.

С тех пор, как я перешел в данные Core, я удалил пользовательские классы Location Address и GPS, о которых я упоминал выше, и позволил Xcode генерировать классы на основе базовой модели данных.

Проблема в том, что я больше не уверен, как создать экземпляр Location в LocationGenerator.Мои прежние определения классов для Location и Address и GPS пропали, и в определениях из базовых данных я не должен переопределять метод init. Но должны ли эти generatede classess быть образцом для моего нового объекта Location?

Наверное, мой вопрос в том, как мне сгенерировать объект местоположения в LocationGenerator.Должен ли LocationGenerator иметь свой объект Location, созданный «внутри» контекста управляемого объекта?Чтобы уточнить с точки зрения пользовательского интерфейса - я только нахожусь в процессе создания Предмета, но он еще не создан, он ждет Местоположения ... и только тогда это вставлено в основные данные .. Должен ли я смотреть на всеобъекты, которые создаются в контексте так же, как я смотрел на объекты ранее, с той лишь разницей, что они находятся в контексте (и управляются правилами CD) и сохраняются?

1 Ответ

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

Назначенный инициализатор для управляемых объектов (то есть объектов базовых данных) равен -initWithEntity:insertIntoManagedObjectContext:, то есть вы не можете создать управляемый объект, если он не связан с managedObjectContext. Вы указываете, что хотите создать объект, а затем через некоторое время решаете, сохранять его или нет. Есть два основных способа сделать это. Первый способ - это иметь некоторый другой тип объекта, который не является NSManagedObject, но который вы можете использовать для заполнения подкласса NSManagedObject позже, когда вы решите, что он должен быть сохранен. Другой способ - просто создать управляемый объект в контексте, а затем удалить его из контекста, если окажется, что он вам не нужен.

NSManagedObjectContexts можно рассматривать как «блокнот». На самом деле ничего не сохраняется до тех пор, пока вы -save: не закроете контекст, поэтому, если вы собираетесь определить, следует ли сохранить объект в том же рабочем процессе, в котором вы собираетесь сохранить контекст, второе путь, вероятно, путь Если время жизни этих предварительно сохраненных данных больше, чем стандартный рабочий процесс, который вы используете с ManagedObjectContexts, тогда первый способ может быть лучше.

НТН.

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