2014-08-28 32 views
0

我想要获取所有对象,其中一项任务是在过去完成的。NSPredicate一对多的日期比较

我断言:

//Other Class 
NSString *predicateFormat = [NSString stringWithFormat:@"status.objectId != '142' && status.objectId != '143' && deleted == 0 && ANY tasks.complete_till < %@",[NSDate date]]; 

class.predicateFormat = predicateFormat; 

//Other class 
    [NSPredicate predicateWithFormat:_predicateFormat]; 

complete_till - 最新数据库

任何其他谓词与精细的工程,但日期将导致崩溃:

> *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format 
> string "status.objectId != '142' && status.objectId != '143' && 
> deleted == 0 && ANY tasks.complete_till < 2014-08-28 20:51:18 +0000"' 

更新:

ANY tasks.complete_till < 2014-08-29 05:15:27 +0000 

也会导致崩溃。

+0

你好@itruf,是'型的'NSDate'对象tasks.complete_till'?因为你是简单地将其作为比较字符串,将无法正常工作。这两个应该是小号ame键入NSString或NSDate。 – 2014-08-29 07:15:00

回答

0

我发现,那的NSString stringWithFormat:回报不同的,比predicateWithFormat。

这是我的问题

0

如果没有看到您要应用的实际对象,很难说出问题出在哪里。

我假设你的对象上有一个状态有一个对象ID即fooBar.status.objectId

开始打破你的谓语。首先从

[NSPredicate predicateWithFormat:@“status.objectId!='142'”];

然后加入

[NSPredicate predicateWithFormat:!@“status.objectId = '142' & & status.objectId = '143'];

+0

[NSPredicate predicateWithFormat:@“ANY tasks.complete_till <2014-08-29 05:15:27 +0000”]崩溃应用程序 – werbary 2014-08-29 05:16:20

+0

这告诉我它的日期比较。如果没有日期比较,应用程序是否可以正常工作? – 2014-08-29 16:09:26