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

Objective c CoreData/SQLite确定字段是否以特定字符串结尾的最快方法,objective-c,cocoa,sqlite,core-data,Objective C,Cocoa,Sqlite,Core Data,我正在使用SQLite支持的CoreData,并试图找到排除字段AirDate以-00-00结尾的行的最快方法 我注意到了 [NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"] 比以前快多了 [NSPredicate predicateWithFormat:@"NOT AirDate LIKE %@", @"*-00-00"] 我还可以做其他优化吗?谢谢 您可以尝试使用正则表达式: [NSPredica

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

我注意到了

[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]
比以前快多了

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

我还可以做其他优化吗?谢谢

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

[NSPredicate predicateWithFormat:@"NOT AirDate MATCHES %@", @"-00-00$"]
但是您可能应该使用NSDate,而不是将日期存储为字符串。使用日期比较而不是匹配字符串进行搜索应该会更快

[NSPredicate predicateWithFormat:@"NOT AirDate CONTAINS %@", @"-00-00"]
在我的测试中是最快的,所以我选择了这个