获取核心数据中一对多关系的NSSet中属性的最小值
-
06-07-2019 - |
题
我在Core Data中设置了几个对象,其中一个是“Deck”。其中一个是“卡片”。 "卡和QUOT;有几个编号的关系,包括“id”。 "甲板"与卡片有一对多的关系。
在甲板上找到具有最小值的某种编号属性的最佳方法是什么,例如id?
显然,我可以获得这样的卡片列表:
NSSet *cardList = self.cards;
我认为我可以构建一个表达式来达到这样的最小值:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
但是我无法理解如何使用该表达式来提取具有最小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]];
将给出 Id
属性等于 deck.cards
中最小值的卡的 NSSet
。
请参阅键值编程指南对设置和数组运算符以获取更多信息。
不隶属于 StackOverflow