2009-12-19 1 views
0

У меня есть Entity «Событие», которое содержит атрибутс именем «AccidentDate». Я пытаюсь выполнить запрос на выборку, чтобы захватить только последний «AccidentDate», но я не уверен, как настроить предикат, чтобы захватить только последний «AccidentDate»Запрос на выбор CoreData с последним предикатом

Ниже приведен мой код до сих пор ...

NSFetchRequest *fetchRequest1 = [[NSFetchRequest alloc] init]; 

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext]; 

[fetchRequest1 setEntity:entity]; 

NSPredicate *predicate;       //unknown code here 
[fetchRequest1 setPredicate:predicate]; 

NSArray *items = [self.managedObjectContext executeFetchRequest:fetchRequest1 error:&error]; 

[fetchRequest1 release]; 

Любая помощь была бы принята с благодарностью. Спасибо

ответ

1

Вы можете использовать массив сортировки дескрипторов непосредственно к NSFetchRequest и вы можете дополнительно установить его выборку предел 1. Это создает следующий код:

NSFetchRequest *fetchRequest1 = [[NSFetchRequest alloc] init]; 

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:[self managedObjectContext]]; 

[fetchRequest1 setEntity:entity]; 

NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"accidentDate" ascending:NO]; 
[fetchRequest1 setSortDescriptors:[NSArray arrayWithObject:dateSort]]; 
[dateSort release], dateSort = nil; 

[fetchRequest1 setFetchLimit:1]; 

NSManagedObject *latest = [[[self managedObjectContext] executeFetchRequest:fetchRequest1 error:&error] lastObject]; 

[fetchRequest1 release], fetchRequest1 = nil; 
0

Я бы выбрал все события, отсортированные по AccidentDate без предиката и захватив первый из массива.