NSPredicate,核心数据中的空白。如何修剪谓词?

时间:2011-10-12 02:49:57

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

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

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

我可以很容易地在我身边修剪,但谓词会将其与数据库进行比较并且不匹配。所以我的问题是如何在谓词中考虑空格,如果可能的话。

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

1 个答案:

答案 0 :(得分:1)

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

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

这是剥离任何狡猾角色的方法:

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

还有whitespaceAndNewlineCharacterSet可以在锡上做到这一点。

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

为此,请看一下:

NSCharacterSet Class Reference

Apple的String Programming Guide