我有一个NSTableView,它使用ArrayController从CoreData中提取数据。在我的表单中,我也有搜索字段。
在以下情况下,搜索表单工作正常:
-
我选择搜索字段,然后在谓词下的绑定检查器中,我将搜索字段绑定到用于在 nstableview 中获取数据的数组控制器。
-
在谓词格式字段中,我添加了
客户名称包含[cd]$value或客户网站包含[cd]$value
所以现在我要么搜索客户名称(字符串)或客户网站(字符串),我得到的结果就很好了。
但是,如果我使用包含 DATE 的字段更改字段,我的搜索将不起作用。例如,注意波纹管不起作用:
contractExpiresOn contains[cd] $value
contractExpiresOn == $value
contractExpiresOn = $value
contractExpiresOn >= $value
contractExpiresOn > $value
contractExpiresOn %LIKE $value
//contractExpiresOn is DATE
当我使用上述谓词格式进行搜索时,应用程序不会崩溃,但不会返回任何结果,即使例如我的日期以 0 开头,只要我在搜索字段中键入 0,NSTableView 就是空的。
谁能告诉我如何通过界面构建器进行搜索以使用日期,或者如果不可能,我如何以编程方式做到这一点。
你不能将日期与字符串进行比较,你必须做一些编程。在 NSDate 上创建一个类别,并添加将日期转换为字符串的方法。例如:
@implementation NSDate(Search)
static NSDateFormatter *searchDateFormatter = nil;
- (NSString *)searchString {
if (!searchDateFormatter) {
searchDateFormatter = [[NSDateFormatter alloc] init];
searchDateFormatter.dateStyle = NSDateFormatterShortStyle;
searchDateFormatter.timeStyle = NSDateFormatterNoStyle;
}
return [searchDateFormatter stringFromDate:self];
}
@end
谓词格式为 birthday.searchString contains $value
。