2012-06-07 131 views
1

我正在比較一個日期(比如start_date)和當前日期(current_date_from_db)。比較NSdate時出現意外錯誤

if ([current_date_from_db compare:start_date]== NSOrderedAscending) 
{ 
    NSLog(@"Yes"); 
} 
else {  
    NSLog(@"No");  
}; 

而且

while([ current_date_from_db earlierDate:start_date] && [current_date_from_db laterDate:end_date]) 

的代碼與

SIGBART失敗::但比較與任一兩個錯誤而失敗終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因:' - [NSCFString isEqualToDate:]

+0

你的一個對象其實不是一個約會。某處您意外地將一個字符串分配給了一個值。 – Joe

+0

如果需要,請確保您保留了current_date_from_db和start_date。您可能保留對自動發佈日期的引用,然後在將其更改爲字符串後嘗試使用它。 –

回答

0

您需要在比較之前進行轉換。使用current_date_from_db創建一個NSDate對象,或將start_date轉換爲一個字符串,然後進行比較。

1

current_date_from_db是一個字符串,您可以在錯誤消息中看到:[NSCFString isEqualToDate:]。您需要解析日期然後再進行比較:

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:current_date_from_db];