首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS/Core-data/Objective:布尔值的NSPredicate

IOS/Core-data/Objective:布尔值的NSPredicate
EN

Stack Overflow用户
提问于 2018-03-24 21:41:45
回答 2查看 165关注 0票数 0

在表视图的NSFetchedResultsController中,我试图筛选出属性为true、1、yes、on或其他类型的情况。

我不清楚NSPredicate是否没有发挥应有的作用,因为1)我的语法是如何处理nilnull值的,还是2)它对属性的类型不正确。

在xcdatamodeld文件中,属性设置为布尔值。

NSManagedObject类中,我使用了一个NSNumber属性--因为据我所知,没有布尔属性,而且应该用一个属性替换NSNumber。

代码语言:javascript
复制
@property (nonatomic, strong) NSNumber *isprivate;//boolean in model.

在某些情况下,我将值设置为@1,但在其他情况下,应该将其设置为零,尽管当我将其注销时,它显示为null。我想从获取的情况中排除是true值为true的情况,是的,@1或其他什么的。

我的NSPredicate代码是:

代码语言:javascript
复制
 NSNumber *privVal = @1;          
 NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate!= %@",privVal];

哪个日志以isprivate != 1的形式记录到控制台?

然而,它并没有按照预期的方式工作。它没有过滤出isprivate为1的情况,而是过滤所有内容,不返回任何结果。

因此,它可能是错误地解释为零或空值。

第二种可能是,对于布尔/NSNumbers或其他任何东西,语法都是错误的。

如果上面的布尔值设置为True,您将希望得到关于如何筛选出nsmanagedobjects的任何建议。

谢谢您的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-25 06:51:50

当使用带有布尔值的谓词时,可以使用@NO@YES

NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate == %@", @YES];,我在这里回答了一个类似的问题,https://stackoverflow.com/a/29380640/4698501

问题是您的属性应该是isPrivate而不是isprivate吗?

票数 0
EN

Stack Overflow用户

发布于 2018-03-25 01:48:27

您是否尝试了下面的代码,我通常使用Integer作为bool值。不要忘记更改CoreData中的类型

代码语言:javascript
复制
NSInteger privVal = 1;          
NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate != %d",privVal];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49470235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档