3

Core Dataにいくつかのオブジェクトを設定しています。そのうちの1つは「デッキ」で、もう1つは「カード」です。「カード」には、「id」を含むいくつかの番号付きの関係があります。「デッキ」はカードと1対多の関係にあります。

idなどの番号付き属性の最小値を持つデッキでカードを見つけるための最良の方法は何ですか?

明らかに私はこのようなカードのリストを得ることができます:

NSSet *cardList = self.cards;

次のような最小値を取得する式を作成できると思います。

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

しかし、その式を使用して、idの最小値(またはidの最小値)を持つカードを抽出する方法を完全に理解することはできません。

4

1 に答える 1

7

これは、Key-Valueコーディングを使用して実行できます。

//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]];

プロパティがの最小値に等しいNSSetカードのを与えます。Iddeck.cards

詳細については、Key-Valueプログラミングガイドのセット演算子と配列演算子の説明を参照してください。

于 2009-10-26T21:40:09.370 に答える