2013-03-04 65 views
1

我使用NSValueTransformer将核心数据保存为CLPlacemark。 (所以它被保存为NSDataNSPredicate将转换的CLPlacemark与另一个CLPlacemark进行比较

但是我已经到了一个地步,我需要根据另一个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]; 

因此,任何其他建议?

+0

下面的答案是否适合您? :) – 2013-03-09 08:34:55

+0

不,我已经结束了使用sha1哈希进行比较。 – Devfly 2013-03-09 12:39:00

回答

1

核心数据支持==和!=针对二进制数据(和可变形属性)的搜索。请勿使用NSKeyedArchiver为您的地标。就像这样在谓词中使用它:

[NSPredicate predicateWithFormat:@"placemark = %@", placemark] 
相关问题