如何按第3级关系过滤核心数据获取请求

时间:2013-10-29 17:19:06

标签: ios objective-c core-data nspredicate

我需要列出购物车中的商品清单。 所以我有这个数据模型: image

我的想法是让SKU产品的所有产品都有一个cartItem来制作这个“产品列表”。

我的问题是最好的方法是什么?

我尝试对Product实体进行fetchRequest并应用此NSPredicate:

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"sku.cartItem IN %@", cartItemArray]];

错误我收到此错误:

  

2013-10-29 15:08:10.860 Prototipo [85766:70b] ***终止app   未被捕获的异常'NSInvalidArgumentException',原因:'无法   解析格式字符串“sku.cartItem IN(       “(entity:CartItem; id:0x8aa2820;   数据:))“,       “(entity:CartItem; id:0x8aa2830;   数据:))“,       “(entity:CartItem; id:0x8aa2840;   数据:))“,       “(entity:CartItem; id:0x8aa2850;   数据:))“,       “(entity:CartItem; id:0x8aa2860;   数据:))“,       “(entity:CartItem; id:0x8aa2870;   数据:))“,       “(entity:CartItem; id:0x8aa2880;   数据:))“,       “(entity:CartItem; id:0x8aa2890;   数据:))“,       “(entity:CartItem; id:0x8aa28a0;   数据:))“,       “(entity:CartItem; id:0x8aa28b0;   数据:))“,       “(entity:CartItem; id:0x8aa28c0;   数据:))“,       “(entity:CartItem; id:0x8aa28d0;   数据:))“,       “(entity:CartItem; id:0x8aa28e0;   数据:)“)”'   

非常感谢你。 感谢您的关注。

----- X -----

编辑(已解决)

为了帮助别人并总结解决方案,它不能用于 [NSString stringWithFormat:@ ...] ,正确的方法是直接使用[NSPredicate predicateWithFormat: @“...”,args ]。

还有一个提示!如果您遇到同样的问题并且需要过滤第n级的数据,请在谓词上使用ANY + IN:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY sku.cartItem IN %@", cartItemArray];

1 个答案:

答案 0 :(得分:1)

谓词使用自己的格式替换。
使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY sku.cartItem IN %@", cartItemArray];