Книга: iOS. Приемы программирования

Решение

Решение

Нужно создать по экземпляру класса 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;
}

Оглавление книги


Генерация: 0.078. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз