What is the bindings parameter for the block in predicateWithBlock: used for?
The declaration for +[NSPredicate predicateWithBlock:] looks like this: + (NSPredicate *)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))block Apple's documentation for the second parameter to the block, bindings , says that it is: The substitution variables dictionary. The dictionary must contain key-value pairs for all variables in the receiver. I can't figure out why this parameter is needed -- nor have I seen it being used anywhere. Why is it there? Also, do I need to look inside bindings when using a block based predicate with -[NSArray filteredArrayUsingPredicate