NSPredicate predicateWithFormat:argumentArray: Only Evaluating First Argument
core-data, ios, nspredicate
Solution
[NSPredicate predicateWithFormat:@"(flid IN %@)" argumentArray:serverIDList]
is equivalent to
[NSPredicate predicateWithFormat:@"(flid IN %@)", id1, id2, ..., idN]
where `id1`, ..., `idN` are the elements of the array `serverIDList`. That should explain why only the first element is evaluated.
What you probably want is
[NSPredicate predicateWithFormat:@"(flid IN %@)", serverIDList]
Remark: I would recomment not to create predicates as strings first. The chances for quoting or escaping errors are quite high. Use only `predicateWithFormat` with a constant format string. If you have to combine predicates dynamically at runtime, use `NSCompoundPredicate`.
Problem
I'm having some trouble using `NSPredicate` `predicateWithFormat:argumentArray`:. In this example, `serverIDList` is array of strings. Results is an array of `NSManagedObjects` with an attribute named "flid" which is a string. ``` NSMutableString *predicateString = [[NSMutableString alloc] init]; [predicateString appendString:@"(flid IN %@)"]; [results filterUsingPredicate:[NSPredicate predicateWithFormat:predicateString argumentArray:serverIDList]]; ``` The problem is that `[NSPredicate predicateWithFormat:predicateString argumentArray:serverIDList]` evaluates to "flid IN '2155'", which is only the first value of the array `serverIDList`. I can't seem to get the predicate to evaluate the entire array. Is there something missing here? Thanks!