2015-01-04 42 views
-1

我想要一個的NSString轉換成NSDate的_NSDate長度無法識別的選擇發送到實例

NSString的destructString是2015-01-04 8時36分42秒+0000

我知道問題從我在下面評論的地方開始,但我似乎無法找到問題所在。

該程序在該點停止並給出標題中的錯誤。

該代碼的目的是比較兩個日期,看看哪一個更舊。

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; 


NSDate *today = [[NSDate alloc]init]; 



[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if(!error){ 
    for(PFObject* object in [self objects]){ 
     NSLog(@"OBJECT: %@", object); 
     PAWPost *post = [[PAWPost alloc] initWithPFObject:object]; 
     NSLog(@"post: %@", post); 
     NSLog(@"today: %@", today); 

     NSString *destructString = [post.object objectForKey:selfDestructDateKey]; 
      NSLog(@"destruct string: %@", destructString); 

     NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 

     [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"]; 

     //SOURCE OF PROBLEM BEGINS HERE 
     NSDate *destructDate = [dateFormat dateFromString:destructString]; 

     NSLog(@"destruct date: %@", destructDate); 

     if([destructDate compare:today] == NSOrderedDescending){ 
      [object deleteEventually]; 
      NSLog(@"DESCENDING"); 
     } 

     else 
      NSLog(@"NOT DESCENDING"); 

    } 

    }else { 

     NSLog(@"Error in findObjectsInBackgroundWithBlock for destruct purposes"); 
    } 
}]; 

我也知道有關於這個問題的另一篇文章,但是我已嘗試修復(這是重新進行格式化),但它並沒有解決這個問題。提前致謝!

+1

看起來像'[post.object objectForKey:selfDestructDateKey]'已經返回你'NSDate'對象)) – sage444

+0

我現在覺得很笨,但感謝它的工作! :) – teenyton

+0

請檢查我的答案,可以證明我的猜測 – sage444

回答

1

如果對象的類型可以改變你應該添加類型檢查,因爲我添加到您的代碼

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if(!error){ 
    for(PFObject* object in [self objects]){ 
     NSLog(@"OBJECT: %@", object); 
     PAWPost *post = [[PAWPost alloc] initWithPFObject:object]; 
     NSLog(@"post: %@", post); 
     NSLog(@"today: %@", today); 

     id destructString = [post.object objectForKey:selfDestructDateKey]; 
      NSLog(@"destruct string: %@", destructString); 
    if ([destructString isKindOfClass:[NSDate class]]) { // already date 
      NSDate * destructDate = (NSDate *)destructString; 
    } else { // parse string 
     NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 

     [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"]; 

     //SOURCE OF PROBLEM BEGINS HERE 
     NSDate *destructDate = [dateFormat dateFromString:destructString]; 

     NSLog(@"destruct date: %@", destructDate); 

     if([destructDate compare:today] == NSOrderedDescending){ 
      [object deleteEventually]; 
      NSLog(@"DESCENDING"); 
     } 

     else 
      NSLog(@"NOT DESCENDING"); 
} 
    } 

    }else { 

     NSLog(@"Error in findObjectsInBackgroundWithBlock for destruct purposes"); 
    } 
}]; 
相關問題