我有一个NSTableView,它使用ArrayController从CoreData中提取数据。在我的表格中,我也有搜索字段。
如果符合以下条件,搜索表单就可以了:
我选择了搜索字段,在谓词下的绑定检查器中,我将搜索字段绑定到用于获取nstableview中数据的数组控制器。
在谓词格式字段中,我添加
customerName包含[cd] $ value或customerWebsite包含[cd] $ value
所以现在我搜索customerName(STRING)或customerWebsite(STRING),我得到的结果就好了。
但是,如果我用包含DATE的字段更改字段,我的搜索不起作用。例如,波纹管的注意事项不起作用:
contractExpiresOn contains[cd] $value
contractExpiresOn == $value
contractExpiresOn = $value
contractExpiresOn >= $value
contractExpiresOn > $value
contractExpiresOn %LIKE $value
//contractExpiresOn is DATE
当我使用上述谓词格式进行搜索时,应用程序不会崩溃,但是没有返回结果,即使例如我在搜索字段中输入0时,我的日期都以0开头,NSTableView是空的。
任何人都可以告诉我如何通过界面构建器使我的搜索与日期一起工作,或者如果不可能,我该如何以编程方式执行此操作。
答案 0 :(得分:1)
您无法将日期与字符串进行比较,您必须进行一些编程。在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
。