net*_*jor 3 objective-c nspredicate cgpoint
我有那个班:
@interface Field : NSObject
@property CGPoint fieldCoordinates;
@property CGPoint ballCoordinates;
@end
Run Code Online (Sandbox Code Playgroud)
我尝试过滤此类对象的NSArray:
NSPredicate * y1 = [NSPredicate predicateWithFormat:@"ballCoordinates.y >= %@",location.y];
NSArray * filtered = [self.fieldsArray filteredArrayUsingPredicate:y1];
Run Code Online (Sandbox Code Playgroud)
但得到错误:
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[valueForUndefinedKey:]:此类不是密钥y的密钥值编码兼容.
NSPredicate有CGPoint过滤器的问题吗?
是的,NSPredicate有问题CGPoint,因为它是一个struct,而不是符合键值的Objective-C类.您可以使用块编写谓词,如下所示:
NSPredicate * y1 = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind) {
return ((CGPoint)[obj ballCoordinates]).y >= location.y;
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |