记录时非常奇怪的NSPredicate行为

时间:2012-02-04 19:53:25

标签: objective-c ios cocoa-touch nspredicate

我正在尝试创建一个谓词来对具有日期属性的对象数组进行排序。但是,当我尝试NSLog谓词时,会引发异常并且我得到一个奇怪的错误。

以下是代码:

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSDate * minDate = [dateFormatter dateFromString:@"2011"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date >= %@ ", minDate];
NSLog(predicate);

这是错误:

2012-02-04 12:45:58.400 MyApp[42746:17303] -[NSComparisonPredicate length]: unrecognized selector sent to instance 0x9359000

那么,为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:2)

尝试:NSLog(@"%@", predicate)

NSLog需要NSString,它可以作为格式字符串使用。格式字符串中的格式说明符数量将指定需要遵循的参数数量。

来自doc

  

<强>的NSLog
  将错误消息记录到Apple系统日志工具。

void NSLog (
   NSString *format,
   ...
);  
     

<强>讨论
  只需调用NSLogv,传递可变数量的NSLogv   参数。