我目前拥有以下核心数据模型:
分类
@interface Category : NSManagedObject
@property (nonatomic, retain) NSSet *subcategory;
子类别
@interface SubCategory : NSManagedObject
@property (nonatomic, retain) Category *category;
@property (nonatomic, retain) NSSet *items;
产品
@interface Item : NSManagedObject
@property (nonatomic, retain) SubCategory *subCategory;
我希望获得一个类别中的所有项目,但是当我写作时:
NSLog(@"Items in Category:%@", self.category.subcategory.items)
我一无所获。
获取信息的方法是什么?因为我收到了一个带有我在ViewController中添加的属性的类:
@property (strong, nonatomic) Category *category;
答案 0 :(得分:0)
一种可能的解决方案是使用键值编码
Collection Operator
@distinctUnionOfSets
:
NSSet *allItems = [self.category valueForKeyPath:@"subcategory.@distinctUnionOfSets.items"];
(请注意,多对多关系“子类别”的更好名称将是 “子类别”。)
或者,您可以使用谓词对“Item”实体执行获取请求 使用反比关系:
[NSPredicate predicateWithFormat:@"subCategory.category == %@", self.category];
这种方法的优点是中间的“SubCategory”对象是 没有加载到内存中。