2011-08-15 9 views
5

na przykład, mam zarządzanego obiektu Zapisz w CoreData jak zespółJak wybrać wpis z maksymalną wartością w cedrach?

@interface: NSManagedObject

@property (nonatomic) NSNumber * ID druzyny;

@end

Mam pomyślnie niektóre zespoły z unikalnym ID druzyny w CoreData, teraz chcę się drużyna z max ID druzyny, jak mam to zrobić?

Kiedyś otrzymywałem wszystkie zespoły i sortowałem je, ale przyniosłoby to duży napływ, by zrobić sprowadzony szyk, lepszy pomysł?

Odpowiedz

5

Korzystanie z NSExpression jest jednym ze sposobów, aby to zrobić. Zostało to opisane w kompletny przykład w sekcji Fetching Specific Values w Core Data Programming Guide

+1

Tak, użyłem @ "@ max:", aby mógł użyć filtra MySQL zamiast pobrać wszystkie wyniki, a następnie filtrować w pamięci, wielkie dzięki. – CarmeloS

0

user465191,

Oto, co zrobić:

NSNumber *max = [teams valueForKeyPath: @"@max.teamID"]; 

NSPredicate *p = [NSPredicate predicateWithFormat: @"%K == %@", @"teamID", max]; 

Team *team = [[teams filteredSetUsingPredicate: p] anyObject]; 

To jest bardziej kłopotliwe niż pragnę ale działa.

Andrew

2
  1. Stosuj NSSortDescriptor dla Twojego pobrać wniosek stosując metodę NSFetchRequests -setSortDescriptors: by określić kolejność do pobierania obiektów.

  2. Określ limit pobierania, używając parametru NSFetchRequest: -setFetchLimit:, aby pobrać tylko pierwszy obiekt.

Powiązane problemy