从To-Many Relationship获取时,部分中的项目错误

时间:2014-07-01 20:39:48

标签: ios core-data nsfetchedresultscontroller

我有以下关系:

enter image description here

我现在想要获取产品的所有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划分到正确的组下?

1 个答案:

答案 0 :(得分:0)

您的谓词格式字符串包含self(group)。它应该是product,而不是group.product。这同样适用于您的排序描述符。

这假设神秘[self entityName]确实是@"SubMenuGroup" 但是,如果它是@"SubMenus",则您的谓词是多余的。以下就足够了:

@"product = %@", product

问题在于更新。也许您应该检查获取的结果控制器和获取的结果控制器委托代码。