2014-08-28 77 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