【问题标题】:NSPredicate, whitespaces in CoreData. How to trim in predicate?NSPredicate,CoreData 中的空格。如何修剪谓词?
【发布时间】:2011-10-12 02:49:57
【问题描述】:

我有一个 CoreData/SQLite 应用程序,其中有“父类别”和“类别”。我无法控制数据,一些“父类别”值有尾随空格。

我可以使用CONTAINS(或者我应该说它适用于CONTAINS,但这是我不能使用的东西)。例如,我有 2 个条目,MEN 和 MENS。如果我使用CONTAINS,我将返回两条记录,您可以看到这将是一个问题。

我可以轻松地进行修剪,但谓词会将其与数据库进行比较并且不会匹配。所以我的问题是,如果可能的话,我该如何解释谓词中的空格。

我有一个人在应用程序中选择的类别“MENS”,并将其与数据库中的“MENS”进行比较。

【问题讨论】:

  • 更好的问题:为什么您商店中的数据没有被清理?那你就不会有这个问题了。
  • 您可以使用 CONTAINS 并假设它可能返回超过 1 条记录,然后循环检查 'isEqualToString` 的提取结果?

标签: objective-c ios sqlite core-data nspredicate


【解决方案1】:

我会在进行查找之前修剪数据。您可以使用stringByTrimmingCharactersInSet 轻松完成此操作。通过事先进行操作,您还可以避免任何性能损失。如果您要与CONTAINS 进行基于字符的比较,那可能会很昂贵。

所以,假设您的搜索字符串是“MEN”。

以下是去除任何狡猾字符的方法:

NSString *trimmed = [@"MEN  " stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

还有whitespaceAndNewlineCharacterSet,它按照锡上的说明进行操作。

或者,您可以轻松地为要修剪的内容创建自己的自定义角色。

为此,请查看:

NSCharacterSet Class Reference

苹果的String Programming Guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多