CoreData/SQLite 确定字段是不是以特定字符串结尾的最快方法

Posted

技术标签:

【中文标题】CoreData/SQLite 确定字段是不是以特定字符串结尾的最快方法【英文标题】:CoreData/SQLite fastest way to determine if a field doesn't end with a particular stringCoreData/SQLite 确定字段是否以特定字符串结尾的最快方法 【发布时间】:2010-09-25 02:31:45 【问题描述】:

我正在使用由 SQLite 支持的 CoreData,我正在尝试找到最快的方法来排除 AirDate 字段以 -00-00 结尾的行

我注意到了

[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]

快很多
[NSPredicate predicateWithFormat:@"NOT AirDate LIKE %@", @"*-00-00"]

我还能做其他优化吗?谢谢!

【问题讨论】:

【参考方案1】:

您可以尝试使用正则表达式:

[NSPredicate predicateWithFormat:@"NOT AirDate MATCHES %@", @"-00-00$"]

但您可能应该使用NSDate 而不是将日期存储为字符串。使用日期比较而不是匹配字符串进行搜索应该会更快。

【讨论】:

【参考方案2】:
[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]

在我的测试中是最快的,所以我就这么做了。

【讨论】:

以上是关于CoreData/SQLite 确定字段是不是以特定字符串结尾的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

Restkit 是不是通过 CoreData Sqlite 处理实体唯一性?

如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?

NSBundle 中的 CoreData sqlite 文件

在 iOS 应用程序中处理数据(选择啥?NSData、CoreData、sqlite、PList、NSUserDefaults)

如何强制更新 CoreData SQLite 数据库?

如何使用 swift 在 iOS coredata sqlite 中启用 DELETE MODE