如何解决NSPredicate错误'不能用于/包含运算符与集合8(不是集合)

我试图根据初始查询的情绪来预测我的coredate,所有的心情都设置为8.我将每秒从0 – 7调用来更新tableview。

但我得到了

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't use in/contains operator with collection 8 (not a collection)' 

我应该使用CONTAINS还是其他运算符来谓词?

 NSString* filter = @"%K CONTAINS[cd] %@"; NSPredicate *getMoodPred = [NSPredicate predicateWithFormat:filter, @"mood", mood]; NSLog(@"getmood %@",getMoodPred); //getmood mood CONTAINS[cd] "7" NSArray *getMoodArray = [[VPPCoreData sharedInstance]allObjectsForEntity:@"Song" orderBy:Nil filteredBy:getMoodPred]; 

可能意味着mood属性存储为数字,而不是string。 “CONTAINS”仅适用于string。 以下谓词应该工作:

 NSNumber *mood = @(7); NSString *filter = @"%K == %@"; NSPredicate *getMoodPred = [NSPredicate predicateWithFormat:filter, @"mood", mood]; 

在rhs和==上使用NSNumber作为比较器。