2013-12-16 2 views
2

Я попытался предикат моего coredate, основанный на настроении на начальные запросы, все настроения установлены на 8. Я буду вызывать от 0 до 7 секунд каждую секунду для обновления таблицы.как решить ошибку NSPredicate 'Невозможно использовать в/содержит оператор с коллекцией 8 (а не коллекцией)

, но я получил

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

Должен ли я использовать СОДЕРЖИТ или другой оператор предицировать?

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]; 

ответ

14

, вероятно, означает, что атрибут mood хранится в виде числа, а не String. «СОДЕРЖИТ» работает только со строками. Следующий предикат должен работать:

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

с помощью NSNumber на РИТ и == как компаратора.

+0

спасибо, что я пропустил это! – Desmond

Смежные вопросы