Базовые вопросы шаблона проекта данных в XCode 4 - PullRequest
1 голос
/ 31 марта 2011

Я создал приложение для iPhone на базе Windows в XCode 4 с Core Data.Что касается битов данных ядра, у меня есть несколько вопросов:

  1. В файле заголовка делегата приложения нет 3 свойства данных ядра не отображаются в качестве переменных экземпляра?т. е. в разделе @interface нет переменных, но для них есть свойства, которые синтезируются в файле реализации.Это правильно?

  2. В механизме сохранения по умолчанию SQLite?В методе «persistentStoreCoordinator» я вижу, что storeURL - это «... URLByAppendingPathComponent: @« CoreDataProjectTemplate.sqlite »

  3. Где и когда будет создан фактический файл персистенции sqlite? Я могуНе видите в коде из шаблона, где это будет? Вам нужно добавить свой собственный код, чтобы создать это?

Ответы [ 3 ]

2 голосов
/ 31 марта 2011
  1. Современная среда выполнения Objective C может синтезировать не только методы доступа, но и хранилище для свойств. Вы можете указать ivars, которые поддерживают ваши свойства, если хотите, или позволить среде исполнения выяснить это.

  2. SQLite является единственным резервным хранилищем для базовых данных, поддерживаемых в iOS.

  3. Если я не ошибаюсь, файл будет создан (если он еще не существует) при сохранении контекста управляемого объекта. URL-адрес ассоциируется с постоянным хранилищем при добавлении в координатор постоянного хранилища.

1 голос
/ 31 марта 2011

1 Я полагаю, вы имеете в виду следующее:

@synthesize managedObjectContext=__managedObjectContext;
@synthesize managedObjectModel=__managedObjectModel;
@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

Этот формат позволяет вам создавать методы доступа для переменной с другим именем (то есть имена методов доступа для метода получения / установки могут отличаться от имени переменной). Если переменная не была ранее определена, то операция синтеза автоматически создаст для вас переменную синтезированного экземпляра.

2 Как вы уже поняли из имени файла, постоянное хранилище по умолчанию для CoreData - SQLite; однако это не ограничено этим одним типом. При первом создании постоянного хранилища вы отправляете сообщение persistentStoreCoordinator, в котором для addPersistentStoreWithType установлено одно из следующих значений:

NSSQLiteStoreType
NSBinaryStoreType
NSInMemoryStoreType

Если честно, если у вас нет веских причин изменить его, вам, вероятно, лучше всего придерживаться SQLite.

3 URL-адрес постоянного хранилища создается путем создания каталога, в котором выполняется приложение (с сообщением applicationDocumentsDirectory - записанного в другом месте вашего кода), а затем добавлением имени файла постоянного хранилища к нему через параметр URLByAppendingPathComponent , Вы можете изменить это, чтобы добавить подпапки или изменить имя файла, если хотите.

1 голос
/ 31 марта 2011

3) Этот storeURL - это имя и местоположение базы данных Core Data. Если вы хотите поместить его в другое место, просто измените базовый каталог. Вы можете рассмотреть каталог поддержки приложений.

...