2015-10-10 4 views
0

let theDate: NSDate = dateFor.dateFromString (date)! дает ошибкуNSDate неинициализирован в swift 2.0

Неожиданно найден nil при разворачивании необязательного значения, theDate возвращается как неинициализированный и как ноль.

if let date = review.createdAt { 
      let dateFor:NSDateFormatter = NSDateFormatter() 
      dateFor.timeZone = NSTimeZone(abbreviation: "UTC") 
      dateFor.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
      let theDate:NSDate = dateFor.dateFromString(date)! 
      let tempoDate = Tempo(date: theDate) 
      let timeStamp = tempoDate.timeAgoNow() 
      if let reviewString = review.description { 
       let review = NSMutableAttributedString(string: reviewString + " - ") 
       let x = NSAttributedString(string: timeStamp, attributes: [NSForegroundColorAttributeName : UIColor.lightGrayColor()]) 
       review.appendAttributedString(x) 
       vivrcell.reviewDescription.attributedText = review 
       vivrcell.reviewDescription.sizeToFit() 

      } 
     } 

Почему это происходит, как я могу это исправить? это работало в быстром 1.2

+0

Вы разобрались, чтобы узнать, какое утверждение вызывает проблему? Или даже добавили заявления 'print'? Затем, когда проблема изолирована, задайте вопрос об этом. – zaph

ответ

0
dateFor.dateFromString(date)! 

возвращает NIL, потому что «дата» содержит неправильно отформатированную строку, которая не может быть преобразована в дату. Но вы вынуждаете его разворачивать, что создает ошибку. Вместо силы разворачивать его! сделайте это с помощью if, если:

if let parsedDate = dateFor.dateFromString(date) { ... } 

, чтобы проверить, работает ли синтаксический анализ.