2011-04-24 72 views
1

我使用的XCode 4 & IOS 4.3Coredata NSPredicate按日期

LastWorn處於coredata模型中的日期屬性。 在目標C類中,LastWorn是NSDate。 使用objective-c我可以設置並從coredata數據庫中獲取日期。 btnSearchOperator包含>或< datePicker.date是一個的UIDatePicker

我想用一個謂語LastWorn日期搜索coredata數據庫的當前選擇的值。從代碼 提取構建NSPredicate查詢數據

... code not shown ... 
if ([txtSearchDate.text length] > 0) 
{ 
    if ([predicate length] != 0) { 
     [predicate appendString:@" AND "]; 
    } 
    [predicate appendFormat:@"LastWorn %@ %@", [btnSearchOperator currentTitle], datePickerView.date];   
} 

上面的代碼追加「LastWorn> 2011-04-20 14:00:00 0000」謂詞和崩潰。

控制檯日誌 2011-04-23 22:34:17.805 iDresser [1216:207] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因:「無法分析格式字符串「Type.Id = = 0和購物== NO AND(LastWorn> 2011-04-20 14:00:00 +0000)「」

如果我用的是F-腳本CoreData瀏覽器工具,並建立一個測試查詢「LastWorn!=零「顯示正確的結果。

如果查詢「LastWorn> 2011-01」,它顯示與LastWorn!= nil相同並且不正確。

如果我查詢「LastWorn> 2011」我得到「NSInvalidArgumentException: - [NSCFNumber timeIntervalSinceReferenceDate]:無法識別的選擇發送到實例0x20048a920」

我只是想找到一個LastWorn日期的所有項目低於指定值? 任何建議,將不勝感激。

回答

2

我遇到了同樣的問題,則需要使用構建謂詞:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"LastWorn %@ %@", [btnSearchOperator currentTitle], datePickerView.date] 

,如果你建立你的斷言在一個字符串,然後將其設置爲謂語

+0

那固定的失敗。 Thankyou花時間回答我的問題。 – user722361 2011-05-10 20:46:59