です。私はもっと効率的な方法があるかどうか分からない。それは、古いものがどれであるかを把握するために、毎日の日付を比較しなければならないからだ。 2つの方法があります。
1)BOOLを管理対象オブジェクトの属性として扱うことができます。 (oldest = 1のように) ただし、削除するたびに新しい「最も古い」管理対象オブジェクトを見つける必要があります。
2)変更するまで古いものを保存することができます。これは、最も古いmanagedObjectを頻繁に見つけなければならない場合に、多くの作業を節約する可能性があります。
アプリケーションによっては(管理対象オブジェクトの挿入/削除回数、最も古いオブジェクトが何回必要か)によって異なります。 - >CoreDataに固有の値をフェッチ
NSExpression *date = [NSExpression expressionForKeyPath:@"date"];
NSExpression *maxDate = [NSExpression expressionForFunction:@"max:"
arguments:[NSArray arrayWithObject:maxDate]];
NSExpressionDescription *d = [[[NSExpressionDescription alloc] init] autorelease];
[d setName:@"maxDate"];
[d setExpression:maxSalaryExpression];
[d setExpressionResultType:NSDateAttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObject:d]];
NSError *error = nil;
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
} else {
if (0 < [objects count]) {
NSLog(@"Maximum date: %@", [[objects objectAtIndex:0] valueForKey:@"maxDate"]);
}
}
これはは、管理オブジェクトをフェッチの下でより詳細に記載されている: