Вход/Регистрация
iOS. Приемы программирования
вернуться

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

Шрифт:

— (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;

}

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[self createNewPersonWithFirstName:@"Anthony"

lastName:@"Robbins"

  • Читать дальше
  • 1
  • ...
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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