Получение уникального набора результатов с Базовыми Данными

У меня есть базовое основанное на данных приложение, которое управляет набором объектов. Я надеюсь смочь сделать следующее.

У меня есть объект "SomeEntity" с атрибутами: имя, введите, займите место, foo1, foo2.

Теперь, SomeEntity имеет несколько строк, если мы говорим строго в терминах SQL. То, что я пытаюсь выполнить, должно получить только доступные типы, даже при том, что каждый экземпляр может иметь дублирующиеся типы. Мне также нужны они, возвратился в порядке согласно разряду. Таким образом в SQL, что я ищу, следующее:

SELECT DISTINCT(type) ORDER BY rank ASC

Вот код, который я имею до сих пор, это повреждается:

NSError *error = NULL;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setReturnsDistinctResults:YES];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"type", @"rank", nil]];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeEntity" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

// sort by rank
NSSortDescriptor *rankDescriptor = [[NSSortDescriptor alloc] initWithKey:@"rank" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:rankDescriptor,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[rankDescriptor release];

NSArray *fetchResults = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

[fetchRequest release];

return fetchResults;

Прямо сейчас это отказывает со следующим: Invalid keypath section passed to setPropertiesToFetch:

9
задан Hope4You 27 December 2012 в 19:01
поделиться

1 ответ

NSManagedObjectContext * ctx ; /* some ctx */    
NSFetchRequest * req; /* your request */
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeEntity" inManagedObjectContext:context];
NSDictionary *entityProperties = [entity propertiesByName];
[req setEntity:entity];
[req setReturnsDistinctResults:YES];
[req setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"type"]]];
[req setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"rank" ascending:YES]]];
NSArray * result = [ctx executeFetchRequest:req error:nil];
17
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: