@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 можно создавать самые разнообразные графические и анимационные эффекты с помощью сравнительно простого кода. Разумеется, качество этой графики и анимации частично зависит от эстетического вкуса программиста и его коллег-художников. Но в этой главе вы увидите, как много можно сделать в области графики и анимации, обладая весьма скромными навыками программирования.
Я не буду углубляться здесь в концептуальные базовые вопросы и расскажу о таких понятиях, как цветовые пространства, преобразования и графический контекст по ходу дела. Мы быстро рассмотрим некоторые фундаментальные вещи и почти сразу перейдем к коду.