NSPredicate,CoreData 中的空格。如何修剪谓词?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

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

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

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

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

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

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

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

为此,请查看:

NSCharacterSet Class Reference

苹果的String Programming Guide

【讨论】:

以上是关于NSPredicate,CoreData 中的空格。如何修剪谓词?的主要内容,如果未能解决你的问题,请参考以下文章

coredata NSPredicate 中的日期比较

有没有办法根据存储在 CoreData 中的实际值来设置 NSPredicate?

如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素过滤对象?

CoreData 获取请求 NSPredicate 不起作用

iOS CoreData NSPredicate 未清除

NSPredicate 使用 CoreData 进行多个 ANY 查询