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

@property (nonatomic, retain) UIColor *color;


@end


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


#import «AppDelegate.h»

#import «Laptop.h»


@implementation AppDelegate


@synthesize managedObjectContext = _managedObjectContext;

@synthesize managedObjectModel = _managedObjectModel;

@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;


— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];


/* Сначала сохраняем объект laptop с заданным цветом */

Laptop *laptop =

[NSEntityDescription

insertNewObjectForEntityForName: NSStringFromClass([Laptop class])

inManagedObjectContext: self.managedObjectContext];


laptop.model = @"model name";

laptop.color = [UIColor redColor];


NSError *error = nil;

if ([self.managedObjectContext save:&error] == NO){

NSLog(@"Failed to save the laptop. Error = %@", error);

}


/* Теперь находим этот же laptop */

NSFetchRequest *fetch =

[[NSFetchRequest alloc]

initWithEntityName: NSStringFromClass([Laptop class])];

fetch.fetchLimit = 1;


fetch.predicate = [NSPredicate predicateWithFormat:@"color == %@",

[UIColor redColor]];


error = nil;

NSArray *laptops = [self.managedObjectContext

executeFetchRequest: fetch

error:&error];


/* Проверка на 1, поскольку лимит выборки равен 1 */

if (laptops.count == 1 && error == nil){


Laptop *fetchedLaptop = laptops[0];


if ([fetchedLaptop.color isEqual: [UIColor redColor]]){

NSLog(@"Right colored laptop was fetched");

} else {

NSLog(@"Could not find the laptop with the given color.");

}

}

else {

NSLog(@"Could not fetch the laptop with the given color. \

Error = %@", error);

}


return YES;

}

См. также

Раздел 16.1.

Глава 17. Графика и анимация

17.0. Введение

Не сомневаюсь, что вам доводилось видеть программы для iPhone и iPad с очень красивой графикой. Кроме того, вы, наверное, встречали забавную анимацию в играх и других программах. При совместном использовании среды времени исполнения iOS и фреймворков программирования Cocoa Touch можно создавать самые разнообразные графические и анимационные эффекты с помощью сравнительно простого кода. Разумеется, качество этой графики и анимации частично зависит от эстетического вкуса программиста и его коллег-художников. Но в этой главе вы увидите, как много можно сделать в области графики и анимации, обладая весьма скромными навыками программирования.

Я не буду углубляться здесь в концептуальные базовые вопросы и расскажу о таких понятиях, как цветовые пространства, преобразования и графический контекст по ходу дела. Мы быстро рассмотрим некоторые фундаментальные вещи и почти сразу перейдем к коду.

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