我试图根据初始查询的情绪来预测我的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];
答案 0 :(得分:16)
可能意味着mood
属性存储为Number,而不是String。 “CONTAINS”仅适用于字符串。以下谓词应该有效:
NSNumber *mood = @(7);
NSString *filter = @"%K == %@";
NSPredicate *getMoodPred = [NSPredicate predicateWithFormat:filter, @"mood", mood];
使用rhs上的NSNumber
和==
作为比较器。