【发布时间】:2016-09-29 09:44:41
【问题描述】:
我有一个名为 originalListArray 的主数组,其中包含多个对象。这是对象的示例。 Example.json
我想从 originalListArray 中找到 amenity_id 与我的过滤器数据匹配的对象数量。 我已经这样做了,创建一个谓词使用 ANY 而不是 self 因为 NSArray 与 NSDictionary 并且在该 Dictionary 对象中可能有 NSArray 数据。
一切正常。
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id =='1')"];
这不起作用。
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id in ('1','2','3')"];
所以单个值可以很容易地过滤,但使用登录操作它的崩溃和错误是这样的。
由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'无法解析格式字符串“任何便利设施.amenity_id in ('1','2','3')”'
非常感谢,如果有人可以帮助我。
【问题讨论】:
-
[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id IN %@", @[@"1",@"2",@"3"]]? -
@Larme 是的,它的工作原理。首先感谢您的快速回复,但我不明白为什么我必须作为数组传递。因为 IN 查询我们通常以逗号分隔值作为字符串传递。
-
如果您记录工作谓词,您会看到它实际上是
@"ANY amenities.amenity_id IN {'1', '2', '3'}"(使用手镯而不是括号)。不,如果需要,使用占位符 (%@) 传递它可以更轻松地进行更改。 -
@Larme 好的,谢谢。 :)
标签: filter nsarray nsdictionary nspredicate