This isn’t really specific to NSPredicate… Whenever you have %@ in a format string, the corresponding value must be a pointer to an object, and BOOL doesn’t qualify. So instead of passing YES, pass [NSNumber numberWithBool: YES].
In newer versions of Xcode and the SDKs than when I originally wrote the answer, you can use @YES instead of [NSNumber numberWithBool: YES].