2013-08-29 62 views
1

这个搜索谓词不适用于iOS吗?这同样似乎在OS X上正常工作。我检查和date.description返回此格式'2013-08-28 23:18:16 +0000'的字符串。我试图实现一个UISearchBar来过滤结果,并希望用户能够输入日期的任何部分。此日期谓词应该工作吗?

[predicates addObject:[NSPredicate predicateWithFormat:@"date.description contains %@", self.searchString]]; 

感谢

回答

1

号如果它的工作原理是巧合。根据文档descriptionNSDate仅用于调试目的。

把你的NSString成的NSDate,写你的谓词是这样的:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
df.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ"; 

NSDate *date = [df dateFromString:self.searchString]; 
NSPredicate *p = [NSPredicate predicateWithFormat:@"date == %@", date]; 

编辑:重新阅读你的问题后,这个答案可能不是非常有帮助。
我会尽量为每个对象保存[df stringFromDate:date];的结果。那么你应该可以用一个谓词来过滤。但是你不能依靠description

+0

谢谢,我这样做是困难的方式,它遍历对象的层次结构,并使用NSDateFormatter获取日期字符串,然后将其与用户输入的内容进行比较。我无法将用户输入的内容一个日期,因为他们可以输入任何字符串来搜索任何字段。 –