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 に答える