2015-03-20 2 views
0

У меня возникла проблема с объектом основной базы данных. Он имеет три атрибута, подобного этой таблицуСортировка строк в сущности на основе атрибута в основных данных

Name   value  details 

cat   xxx   01 
apple   YYY   10 
ball   ZZZ   11 

Мне нужно, чтобы отсортировать таблицу на основе атрибута «Name», чтобы сделать лицо выглядеть следующим образом

Name   value  details 

apple   YYY   10 
ball   ZZZ   11 
cat   xxx   01 

Используя приведенный ниже код только сортирует «имя "значения атрибута, но мне нужна вся строка для сортировки.

NSFetchRequest *fetchRequest1 = [NSFetchRequest fetchRequestWithEntityName:@"UserData"]; 
     fetchRequest1.resultType = NSDictionaryResultType; 
    [fetchRequest1 setPropertiesToFetch:[NSArray arrayWithObjects:@"userName", nil]]; 
    fetchRequest1.returnsDistinctResults = YES; 


    NSArray *dictionaries1 = [self.managedObjectContext executeFetchRequest:fetchRequest1 error:nil]; 
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"userName" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
    NSArray* sortedArray=[dictionaries1 sortedArrayUsingDescriptors:@[sort]]; 

Есть ли способ отсортировать всю строку и сохранить объект?

+0

Хех? Какие объекты имеют свойство name, value и details. –

+0

имя пользователя, uservalue и userdetails – vishnuvarthan

+0

Основные данные, такие как SQL. Если вы хотите сохранить что-то о пользователе, вы создаете объект SINGLE core data, называемый User (например, таблицу в SQL), который имеет 3 свойства. Попробуйте взглянуть на учебник по основным данным, чтобы лучше понять его. –

ответ

2

Вы указали NSDictionaryResultType, поэтому выборка возвращает только один атрибут, указанный вами - username. Чтобы получить полный объект со всеми его атрибутами, удалите эти строки. Вам также не нужно returnsDistinctResults. И вы также можете получить выборку для сортировки, а не сортировать массив после этого:

NSFetchRequest *fetchRequest1 = [NSFetchRequest fetchRequestWithEntityName:@"UserData"]; 
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"userName" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
fetchRequest1.sortDescriptors = @[sort]; 
NSArray *sortedResults = [self.managedObjectContext executeFetchRequest:fetchRequest1 error:nil]; 
Смежные вопросы