У меня та же проблема, что и на этот вопрос , но ответ @davedelong для меня не работает.
Следуя примеру Apple , для получения наименьшей даты в наборе объектов я получаю следующую ошибку
-[NSDate count]: unrecognized selector sent to instance
Насколько я понимаю, максимум NSExpression
: только поддержка NSArray
s. Поэтому мне нужно другое решение.
@ davedelong предложил использовать восходящий NSSortDescriptor
, и я сделал:
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:NSStringFromClass([GCSession class])
inManagedObjectContext:self.objectContext];
fetchRequest.fetchLimit = 1;
NSSortDescriptor* sort = [[NSSortDescriptor alloc] initWithKey:@"startDate" ascending:YES];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:sort];
GCSession* session = [[self.objectContext executeFetchRequest:fetchRequest error:nil] lastObject];
return session.startDate;
Проблема здесь в том, что объект session
, возвращаемый из выборки, не похож на объект с наименьшим startDate
. В моих тестах кажется, что он даже возвратил новейшую дату, но это не кажется последовательным.
Я мог бы также извлекать каждый GCSession
объект и сортировать их, но это кажется излишним, особенно если учесть, что GCSession
будет увеличиваться в количестве, когда пользователи будут использовать приложение.
Редактировать : Тестовый проект , демонстрирующий ошибку в примере кода Apple.