我有以下关系:
我现在想要获取产品的所有SubMenuGroup,然后获取组的所有子菜单。
这就是我目前所拥有的:
+ (NSFetchRequest *)getSubMenusForProduct:(Product *)product {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[self entityName]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"group.product.remoteID == %@ && group.product == %@", product.remoteID, product];
NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group.name"
ascending:YES];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortVal"
ascending:YES];
NSArray *sortDescriptors = @[groupSortDescriptor, sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
return fetchRequest;
}
这样可以很好地获取组,但有时会将subMenus划分到错误的组下(更新数据时)。我如何设法获取产品的所有subMenuGroup,然后将subMenus划分到正确的组下?
答案 0 :(得分:0)
您的谓词格式字符串包含self(group
)。它应该是product
,而不是group.product
。这同样适用于您的排序描述符。
这假设神秘[self entityName]
确实是@"SubMenuGroup"
但是,如果它是@"SubMenus"
,则您的谓词是多余的。以下就足够了:
@"product = %@", product
问题在于更新。也许您应该检查获取的结果控制器和获取的结果控制器委托代码。