使用 InterfaceBuilder 在 NSTableView 和 CoreData 中按日期搜索记录



我有一个NSTableView,它使用ArrayController从CoreData中提取数据。在我的表单中,我也有搜索字段。

在以下情况下,搜索表单工作正常:

  1. 我选择搜索字段,然后在谓词下的绑定检查器中,我将搜索字段绑定到用于在 nstableview 中获取数据的数组控制器。

  2. 在谓词格式字段中,我添加了

    客户名称包含[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

相关内容

  • 没有找到相关文章

最新更新