这应该很简单,但是有一些原因使我无法使用NSPredicate通过NSNumber过滤自定义对象的数组。从JSON转换时,它可能与数据类型有关,但我无法弄清楚。
我从JSON中的自定义对象数组中下载数据,看起来像:
{"hid":"47","public":"1"}
解析JSON的代码如下:
if (feedElement[@"public"] && ![feedElement[@"public"] isEqual:[NSNull null]]) {
newMyObject.pub = feedElement[@"public"]== nil ? @"0" : feedElement[@"public"];}
对象看起来像:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface MyObject : NSObject
@property (nonatomic, retain) NSNumber * hid;
@property (nonatomic, retain) NSNumber * pub;
@end
NS_ASSUME_NONNULL_END
对象被放置在NSArray * myObjects中
我的NSPredicate和过滤器代码如下:
NSPredicate *pubPred = [NSPredicate predicateWithFormat:@"pub == 1"];
NSArray *filteredArray = [myObjects filteredArrayUsingPredicate:pubPred];
[当我登录[myObjects valueForKey:@"pub"]
时,它记录为1,1,1,依此类推,所以我知道pub的值都为1,但是结果filteredArray
为空。
我的代码可能出什么问题了?
谢谢您的建议。
Edit:如果public是保留字,但我没有更改任何内容,我将public更改为pub。
这应该很简单,但是有一些原因使我无法使用NSPredicate通过NSNumber过滤自定义对象的数组。转换时可能与数据类型有关...
带有示例代码:{"hid":"47","public":"1"}