使用 NSPredicate ANY 和 IN 使用 NSDictionary(对象的嵌套级别)过滤 NSArray?
Filter NSArray with NSDictionary (nested level of object) using NSPredicate ANY and IN?
我有一个名为 originalListArray 的主数组,其中有多个 objects.Here 是对象的示例。
Example.json
我想从 originalListArray 中找到与我的过滤数据相匹配的 amenity_id 个对象。
我已经这样做了,创建一个谓词 usign 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')"];
所以单个值可以很容易地被过滤,但是使用 IN 操作它的崩溃和错误是这样的。
由于未捕获的异常 'NSInvalidArgumentException',正在终止应用程序,原因:'Unable to parse the format string "ANY amenities.amenity_id in ('1','2','3')"'
在此先感谢,如果有人可以帮助我。
我认为最好将数组作为带有 %@
占位符的参数传递。
[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id IN %@", @[@"1",@"2",@"3"]]
这样,您可以手动创建数组,如果您需要更改它,它会更容易。
如果您仍然希望它手动更改 "string format":
[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id IN {'1', '2', '3'}"]
我有一个名为 originalListArray 的主数组,其中有多个 objects.Here 是对象的示例。 Example.json
我想从 originalListArray 中找到与我的过滤数据相匹配的 amenity_id 个对象。 我已经这样做了,创建一个谓词 usign 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')"];
所以单个值可以很容易地被过滤,但是使用 IN 操作它的崩溃和错误是这样的。
由于未捕获的异常 'NSInvalidArgumentException',正在终止应用程序,原因:'Unable to parse the format string "ANY amenities.amenity_id in ('1','2','3')"'
在此先感谢,如果有人可以帮助我。
我认为最好将数组作为带有 %@
占位符的参数传递。
[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id IN %@", @[@"1",@"2",@"3"]]
这样,您可以手动创建数组,如果您需要更改它,它会更容易。
如果您仍然希望它手动更改 "string format":
[NSPredicate predicateWithFormat:@"ANY amenities.amenity_id IN {'1', '2', '3'}"]