1

我使用这个 NSExpressionDescription 来获取属性 date_modified 的最大值:

NSFetchRequest *dateModifiedFR = [[NSFetchRequest alloc] initWithEntityName:@"MyEntity"];
dateModifiedFR.resultType = NSDictionaryResultType;

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"date_modified"];
NSExpression *maxDateExpression = [NSExpression expressionForFunction:@"max:" arguments:@[keyPathExpression]];

NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxDate"];
[expressionDescription setExpression:maxDateExpression];
[expressionDescription setExpressionResultType:NSDateAttributeType];
dateModifiedFR.propertiesToFetch = @[expressionDescription];

NSError *error = nil;
NSArray *resultDictionaries = [moc executeFetchRequest:dateModifiedFR error:&error];
NSDate *maxDate = [[resultDictionaries firstObject] valueForKey:@"maxDate"];

只要我使用 SQLite 商店,这在 iOS 7 下就可以正常工作。但现在我想用我的单元测试运行这段代码,使用内存存储并执行这个获取请求抛出:'NSInvalidArgumentException', reason: '-[__NSDate count]: unrecognized selector sent to instance 0xa01b410'

我知道在这种情况下还有其他方法可以获取最大值,但我很好奇这个获取请求有什么问题,或者为什么它不能在内存存储中运行。

4

1 回答 1

1

看起来这实际上是一个错误。我已经向 Apple 提交了一份雷达文件。

于 2013-11-12T10:05:17.840 回答