Sha*_* A. 3 core-data objective-c nsset
我在Core Data中设置了几个对象,其中一个是"Deck",其中一个是"Card"."卡片"有几个编号的关系,包括"id"."Deck"与卡片有一对多的关系.
在甲板中找到具有最小值的某些编号属性的最佳方法是什么,例如id?
显然我可以得到这样的卡片列表:
NSSet *cardList = self.cards;
Run Code Online (Sandbox Code Playgroud)
我想我可以构建一个表达式,以达到这样的最小值:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:" 
            arguments:[NSArray arrayWithObject:keyPathExpression]];
Run Code Online (Sandbox Code Playgroud)
但我无法理解如何使用该表达式来提取具有最小id值(或只是id的最小值)的卡.
您可以使用键值编码来执行此操作:
//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]];
Run Code Online (Sandbox Code Playgroud)
将给出NSSet其Id财产等于最小的卡deck.cards.
有关详细信息,请参阅"键值编程指南"中的" 设置和数组运算符 "的说明.