在tableview的NSFetchedResultsController
中,我试图过滤掉属性为true,1,yes,on或者其他的情况。
由于1)我的语法如何处理NSPredicate
或nil
值或2),我不清楚null
是否表现不佳,因为它不正确属性类型。
在xcdatamodeld文件中,该属性设置为Boolean。
在NSManagedObject
类中,我使用了NSNumber
属性 - 因为据我所知,没有布尔属性,而且应该替换NSNumber。
@property (nonatomic, strong) NSNumber *isprivate;//boolean in model.
在某些情况下,我将值设置为@ 1。但是,在其他情况下,它应该设置为nil,但是当我将其注销时,它显示为null。我想从isprivate的值为true,yes,@ 1或其他的fetch案例中排除。
我的NSPredicate代码是:
NSNumber *privVal = @1;
NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate!= %@",privVal];
以isprivate != 1
但是,它没有按预期工作。不过滤掉isprivate为1的情况,而是过滤所有内容并且不返回任何结果。
所以也许它解释nil或null值是错误的。
第二种可能性是布尔/ NSNumbers或其他任何语法都是错误的。
非常感谢有关如何过滤掉上面设置的布尔值为True的nsmanagedobjects的任何建议。
提前感谢任何建议。
答案 0 :(得分:0)
您是否尝试过以下代码,我通常使用Integer来表示bool值。不要忘记更改CoreData中的类型
NSInteger privVal = 1;
NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate != %d",privVal];
答案 1 :(得分:0)
使用带布尔值的谓词时,您可以使用@NO
或@YES
。
NSPredicate *securePred = [NSPredicate predicateWithFormat:@"isprivate == %@", @YES];
我在这里回答了类似的问题https://stackoverflow.com/a/29380640/4698501
问题可能是您的财产isPrivate
而不是isprivate
?