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?
如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素过滤对象?