【问题标题】:NSPredicate comparing transformed CLPlacemark with another CLPlacemarkNSPredicate 将转换后的 CLPlacemark 与另一个 CLPlacemark 进行比较
【发布时间】:2013-02-18 17:09:08
【问题描述】:

我正在使用NSValueTransformer 在核心数据中保存CLPlacemark。 (所以保存为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];

还有其他建议吗?

【问题讨论】:

  • 下面的答案对你有用吗? :)
  • 不,我最终使用 sha1 哈希进行比较。

标签: iphone cocoa-touch core-data nspredicate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2018-10-06
    相关资源
    最近更新 更多