dikkate almayan:NSDictionaryResultType ifadesi aşağıdaki isteği kurdunuz yüzden çekirdek verilerinde bir alanın maksimum değerini istemek, yeni eklenen nesneler
// Create fetch
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context]];
[fetch setResultType:NSDictionaryResultType];
// Expression for Max ID
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"myNumbericID"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"max:" arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxID"];
[expressionDescription setExpression:minExpression];
[expressionDescription setExpressionResultType:NSDoubleAttributeType];
[fetch setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
// Execute the fetch.
double theID = 0;
NSError *error;
NSArray *objects = [context executeFetchRequest:fetch error:&error];
if (objects && [objects count] > 0) {
theID = [((NSNumber *)[[objects objectAtIndex:0] valueForKey:@"maxID"]) doubleValue];
}
o hesaba herhangi bir yeni içine almıyor görünür Ancak önce içeriğe yerleştirilmiş nesneler. Bu şekilde çalışması gerekiyor mu? Sadece mağazadaki nesneler üzerinde çalışıyor mu?
Dokümanlardaki herhangi bir başvuru bulamıyorum.
sayesinde
Mike
Bu işe yarayacak olsa da, önce ölçütlere uyan her nesneyi önce belleğe getirmeye güveniyordu. Benim durumumda bu çok fazla nesne olurdu. Bunu, veri deposuna karşı toplu SQL deyimi aracılığıyla hesaplamak için Çekirdek Verilere ihtiyacım vardı. –
Bu durumda, yalnızca bir NSSortDescriptor ve fetchLimit 1 kullanabilirsiniz, daha sonra yalnızca tek bir nesneye yüklersiniz. – malhal