Erste das Minimum Wert eines Attributs in einem NSSet aus einem One-to-Many Beziehung in Core Data

StackOverflow https://stackoverflow.com/questions/1627447

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe mehrere Objekte in Core Data einrichten, von denen eine „Deck“ und einer davon ist „Karte“. „Karten“ haben mehrere nummerierte Beziehungen, einschließlich der „id“. „Deck“ hat eine Eins-zu-viele-Beziehung mit Karten.

Was ist der beste Weg, um die Karte in einem Deck zu finden, der den Minimalwert bis zu einem gewissen nummerierten Attribute hat, wie id?

Klar kann ich die Liste der Karten wie diese:

NSSet *cardList = self.cards;

Ich glaube, ich kann einen Ausdruck bauen ein Minimum wie folgt zu erhalten:

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:" 
            arguments:[NSArray arrayWithObject:keyPathExpression]];

Aber ich kann nicht ganz abtasten, wie man diesen Ausdruck verwenden, um die Karte mit dem minimalen Wert von id (oder nur den minimalen Wert von id) zu extrahieren.

War es hilfreich?

Lösung

können Sie tun dies mit Schlüsselwert-Codierung:

//assuming Card has an Id property which is a number
NSNumber *minId = [deck valueForKeyPath:@"cards.@min.Id"];

NSSet *minCards = [[deck cards] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"Id==%@", minId]];

die NSSet von Karten, deren Id Eigenschaft ist gleich dem Minimum in deck.cards geben.

Sehen Sie die Schlüsselwert-Programmierhandbuch Beschreibung der Set und Array-Operatoren für weitere Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top