Читаем iOS. Приемы программирования полностью

@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.");

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Обсуждение

В предыдущих разделах было показано, как с помощью редактора Xcode создавать сущности и генерировать на их основе код. Далее нужно приступить к использованию этих сущностей и инстанцировать их. Для этого мы используем класс NSEntityDescription и вызываем метод insertNewObjectForEntityForName: inManagedObjectContext: этого класса. В таком случае будет производиться поиск заданной сущности (указанной с именем NSString) в обозначенном контексте управляемых объектов. Ситуация напоминает процесс создания новой строки (управляемый объект) в таблице (сущность) базы данных (контекст управляемых объектов).

При попытке вставить в контекст управляемых объектов неизвестную сущность возникнет исключение типа NSInternalInconsistencyException.

После того как в контекст будет вставлена новая сущность, его необходимо сохранить. В результате все несохраненные данные контекста будут сброшены в долговременную память. Это можно сделать с помощью метода экземпляра save:, относящегося к нашему контексту управляемых объектов. Если логическое (BOOL) возвращаемое значение этого метода равно YES, мы можем быть уверены, что контекст сохранен. В разделе 16.4 будет рассмотрено, как считывать данные назад в оперативную память.

16.4. Считывание данных из Core Data

Постановка задачи

Требуется считывать содержимое ваших сущностей (таблиц) с помощью Core Data.

Решение

Воспользуйтесь экземпляром класса NSFetchRequest:


— (BOOL) createNewPersonWithFirstName:(NSString *)paramFirstName

lastName:(NSString *)paramLastName

age:(NSUInteger)paramAge{


BOOL result = NO;


if ([paramFirstName length] == 0 ||

[paramLastName length] == 0){

NSLog(@"First and Last names are mandatory.");

return NO;

}


Person *newPerson = [NSEntityDescription

insertNewObjectForEntityForName:@"Person"

inManagedObjectContext: self.managedObjectContext];


if (newPerson == nil){

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

return NO;

}


newPerson.firstName = paramFirstName;

newPerson.lastName = paramLastName;

newPerson.age = @(paramAge);


NSError *savingError = nil;


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

return YES;

} else {

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

}


return result;


}


Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже