Чтение онлайн

на главную

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

6. Теперь система предложит вам выбрать сущности, которые вы хотите экспортировать из своей модели на диск в виде файлов Objective-C. Поскольку мы создали всего одну сущность — Person, ваш список будет выглядеть примерно как на рис. 16.9. Убедитесь, что сущность Person отмечена, а потом нажмите кнопку Next (Далее).

Рис. 16.9. Экспорт сущности Person на диск в качестве управляемого объекта

7. На последнем этапе вам будет предложено

сохранить сущность на диске. Убедитесь, что ваш проект отмечен в поле Targets (Цели) (рис. 16.10). В противном случае эта сущность не будет доступна в других файлах исходного кода, используемых в проекте. Если вас все устраивает, нажмите кнопку Create (Создать).

Рис. 16.10. Сохранение сущности на диске

Итак, вы увидите в своем проекте два файла, которые называются Person.h и Person.m. Откройте файл Person.h. Там будет написано следующее:

#import <Foundation/Foundation.h>

#import <CoreData/CoreData.h>

@interface Person: NSManagedObject

@property (nonatomic, retain) NSNumber * age;

@property (nonatomic, retain) NSString * firstName;

@property (nonatomic, retain) NSString * lastName;

@end

Файл Person.m реализуется следующим образом:

#import «Person.h»

@implementation Person

@dynamic age;

@dynamic firstName;

@dynamic lastName;

@end

Вот и все! Мы выполнили реальное определение и реализацию управляемого объекта. В разделе 16.3 мы научимся инстанцировать и сохранять управляемый объект типа Person в контексте управляемых объектов приложения.

Обсуждение

Когда мы создавали в Xcode модель данных с помощью редактора, в ходе этой работы создавали отношения данных, сущности, атрибуты и т. д. Тем не менее, чтобы эту модель можно было использовать в приложении, для нее нужно сгенерировать код. Если просмотреть файлы. h и. m ваших сущностей, то выяснится, что все атрибуты присваиваются динамически. В.m-файле сущностей вы увидите директиву @dynamic. Она сообщает компилятору, что вы выполните запрос каждого атрибута во время исполнения с применением динамического расширения метода.

Код, применяемый во фреймворке Core Data к вашим сущностям, остается совершенно невидимым. На самом деле действительно нет никакой необходимости в том, чтобы программист видел этот код. Все, о чем следует знать, — сущность Person имеет три атрибута: firstName, lastName и age. Этим атрибутам можно присваивать значения (если они являются свойствами, доступными для чтения и записи), их можно сохранять в контекст и загружать из контекста, как будет показано в разделе 16.3.

16.3. Создание и сохранение данных с помощью Core Data

Постановка

задачи

Вы создали управляемый объект. После этого вы хотите инстанцировать его и вставить этот экземпляр в контекст Core Data вашего приложения.

Решение

Выполните инструкции, описанные в разделах 16.1 и 16.2. Теперь можно использовать метод класса insertNewObjectForEntityForName: inManagedObjectContext:, относящийся к классу NSEntityDescription, чтобы создать новый объект типа, указанного в первом параметре этого метода. Как только будет создана новая сущность (управляемый объект), ее можно будет изменить, модифицируя ее свойства. После того как все будет готово, сохраните контекст управляемого объекта с помощью метода экземпляра save:, относящегося к контексту управляемых объектов.

Предполагается, что вы уже создали в Xcode универсальное приложение под названием Creating and Saving Data Using Core Data. Теперь, чтобы вставить новый управляемый объект в контекст, выполните следующие шаги.

1. Найдите файл под названием Creating_and_Saving_Data_Using_Core_DataAppDelegate.m.

2. Импортируйте файл Person.h в файл реализации делегата приложения:

Сущность Person мы создали в разделе 16.1.

#import «AppDelegate.h»

#import «Person.h»

@implementation AppDelegate

@synthesize managedObjectContext = _managedObjectContext;

@synthesize managedObjectModel = _managedObjectModel;

@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;

<# Остаток кода вашего приложения находится здесь #>

В методе application: didFinishLaunchingWithOptions: совместно используемого делегата приложения напишем следующий код:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

Person *newPerson = [NSEntityDescription

insertNewObjectForEntityForName:@"Person"

inManagedObjectContext: self.managedObjectContext];

if (newPerson!= nil){

newPerson.firstName = @"Anthony";

newPerson.lastName = @"Robbins";

newPerson.age = @51;

NSError *savingError = nil;

if ([self.managedObjectContext save:&savingError]){

NSLog(@"Successfully saved the context.");

} else {

NSLog(@"Failed to save the context. Error = %@", savingError);

}

} else {

NSLog(@"Failed to create the new person.");

}

Поделиться:
Популярные книги

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Последний попаданец

Зубов Константин
1. Последний попаданец
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Последний попаданец

Восход. Солнцев. Книга IX

Скабер Артемий
9. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга IX

Система Возвышения. Второй Том. Часть 1

Раздоров Николай
2. Система Возвышения
Фантастика:
фэнтези
7.92
рейтинг книги
Система Возвышения. Второй Том. Часть 1

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Последний Паладин. Том 8

Саваровский Роман
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 8

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

В ожидании осени 1977

Арх Максим
2. Регрессор в СССР
Фантастика:
альтернативная история
7.00
рейтинг книги
В ожидании осени 1977

Кровь, золото и помидоры

Распопов Дмитрий Викторович
4. Венецианский купец
Фантастика:
альтернативная история
5.40
рейтинг книги
Кровь, золото и помидоры

Последний реанорец. Том I и Том II

Павлов Вел
1. Высшая Речь
Фантастика:
фэнтези
7.62
рейтинг книги
Последний реанорец. Том I и Том II

Кодекс Охотника. Книга III

Винокуров Юрий
3. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Кодекс Охотника. Книга III

Помещица Бедная Лиза

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Помещица Бедная Лиза

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание