コアデータの1対多の関係から作成されたNSSetの属性の最小値の取得
-
06-07-2019 - |
質問
Core Dataにはいくつかのオブジェクトが設定されていますが、そのうちの1つが「Deck」です。そのうちの1つは「カード」です。 "カード" 「id」など、いくつかの番号付きの関係があります。 "デッキ"カードと1対多の関係があります。
IDなどの番号付き属性の最小値を持つデッキでカードを見つける最良の方法は何ですか?
明らかに次のようなカードのリストを取得できます:
NSSet *cardList = self.cards;
次のような最小値を取得する式を作成できると思います:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
しかし、idの最小値(またはidの最小値)でカードを抽出するためにその式を使用する方法を十分に検討することはできません。
解決
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]];
は、 Id
プロパティが deck.cards
の最小値に等しいカードの NSSet
を提供します。
セット演算子と配列演算子を参照してください。
所属していません StackOverflow