NSPredicate一对多的日期比较

时间:2014-08-28 20:54:38

标签: objective-c core-data 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 - 数据库中的日期

任何其他带有ANY的谓词都可以正常工作,但是日期会导致崩溃:

> *** 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

也导致崩溃。

2 个答案:

答案 0 :(得分:0)

如果没有看到你正在应用它的实际对象,很难说出问题所在。

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

开始分解您的谓词。首先从

开始

[NSPredicate predicateWithFormat:@&#34; status.objectId!=&#39; 142&#39;&#34;];

然后添加

[NSPredicate predicateWithFormat:@&#34; status.objectId!=&#39; 142&#39; &安培;&安培; status.objectId!=&#39; 143&#39;];

答案 1 :(得分:0)

我发现,nsstring stringWithFormat:返回的不同于predicateWithFormat。

这是我的问题