NSPredicate将转换后的CLPlacemark与另一个CLPlacemark进行比较

时间:2013-03-04 15:01:00

标签: iphone cocoa-touch core-data nspredicate

我正在使用CLPlacemark在核心数据中保存NSValueTransformer。 (所以它保存为NSData

但是我已经到了需要根据另一个CLPlacemark对象过滤保存的对象的地步。

我试过这个,它不起作用:

NSExpression *exprPath = [NSExpression expressionForKeyPath:@"placemark"];
NSExpression *exprKeyword = [NSExpression expressionForConstantValue:[NSKeyedArchiver archivedDataWithRootObject:placemark]];
NSPredicate *predicate = [NSComparisonPredicate predicateWithLeftExpression:exprPath rightExpression:exprKeyword modifier:NSDirectPredicateModifier type:NSEqualToPredicateOperatorType options:0];

那么还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

核心数据支持==和!=搜索二进制数据(和可转换属性)。不要将 NSKeyedArchiver 用于地标。只需在谓词中使用它就像这样:

[NSPredicate predicateWithFormat:@"placemark = %@", placemark]