使用NSPredicate通过NSNumber麻烦过滤自定义对象的数组

问题描述 投票:0回答:1

这应该很简单,但是有一些原因使我无法使用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过滤自定义对象的数组。转换时可能与数据类型有关...

ios nspredicate nsnumber
1个回答
0
投票

带有示例代码:{"hid":"47","public":"1"}

© www.soinside.com 2019 - 2024. All rights reserved.