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

if ([lastPerson isDeleted]){

NSLog(@"Successfully deleted the last person…");


NSError *savingError = nil;

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

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

} else {

NSLog(@"Failed to save the context.");

}


} else {

NSLog(@"Failed to delete the last person.");

}


} else {

NSLog(@"Could not find any Person entities in the context.");

}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

После запуска приложения в окне консоли отобразится примерно следующий результат:

Successfully deleted the last person… // последний контакт успешно удален

Successfully saved the context. // контекст успешно сохранен

16.6. Сортировка данных в Core Data

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

Требуется сортировать управляемые объекты (записи), выбираемые из контекста управляемых объектов (базы данных).

Решение

Нужно создать по экземпляру класса NSSortDescriptor для каждого атрибута (в терминологии баз данных — столбца) той сущности, в которой требуется произвести сортировку. Дескрипторы сортировки добавляются к массиву, а сам массив присваивается экземпляру NSFetchRequest с помощью метода экземпляра setSortDescriptors:. В данном коде, приведенном в качестве примера, Sorting_Data_in_Core_DataAppDelegate — это класс, представляющий делегат универсального приложения (о том, как создается сущность Person, рассказано в разделах 16.1 и 16.2:


— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


[self createNewPersonWithFirstName:@"Richard"

lastName:@"Branson"

age:61];


[self createNewPersonWithFirstName:@"Anthony"

lastName:@"Robbins"

age:51];


/* Сначала создаем запрос выборки данных. */

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]

initWithEntityName:@"Person"];


NSSortDescriptor *ageSort =

[[NSSortDescriptor alloc] initWithKey:@"age"

ascending: YES];


NSSortDescriptor *firstNameSort =

[[NSSortDescriptor alloc] initWithKey:@"firstName"

ascending: YES];

fetchRequest.sortDescriptors = sortDescriptors;


/* Сообщаем запросу, что сначала мы хотим

считать содержимое сущности Person. */

[fetchRequest setEntity: entity];


NSError *requestError = nil;


/* Теперь применим запрос выборки данных к контексту. */

NSArray *persons =

[self.managedObjectContext executeFetchRequest: fetchRequest

error:&requestError];


for (Person *person in persons){


NSLog(@"First Name = %@", person.firstName);

NSLog(@"Last Name = %@", person.lastName);

NSLog(@"Age = %lu", (unsigned long)[person.age unsignedIntegerValue]);


}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Обсуждение

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