2014-12-13 128 views
1

初學者警報如何將解析日期對象轉換爲字符串?

我想查詢從PFUser一個日期,然後將其格式化爲NSDate的,因此是比較有用的。麻煩的開始,當我嘗試將對象轉換爲NSString的,所以我可以用NSDateFormatter()

var user = PFUser.query() 
    user.whereKey("username", equalTo: PFUser.currentUser().username) 
    user.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
     if error == nil { 
      for object in objects { 
       var lastActive = object["lastActive"] 
       if lastActive != nil { 
       let newLastActive = lastActive as String //problem starts here!! 
       let dateFormatter = NSDateFormatter() 
       dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
       let date = dateFormatter.dateFromString(newLastActive) 
       println("new date \(date)") 
       } 

      } 
     } 
    } 

什麼是這樣做的正確的方式格式化?另外,如果我沒有將變量類型指定爲AnyObject,它會以可選方式出現。將其轉換爲字符串時,如何擺脫可選項?

編輯:對象「lastActive」是由解析雲設置的日期,而不是字符串。

+0

您的lastActive字段在解析中是否存儲日期或字符串? – 2014-12-13 09:37:18

+0

它存儲的日期就像「createdAt」 – user3483697 2014-12-13 09:38:32

回答

3

如果您lastActive細胞返回日期,你可以使用:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
let date = dateFormatter.stringFromDate(lastActive as NSDate) 

你不必投你的日期字符串,您將創建通過dateformatter日期字符串。 但是,如果你這樣做,你可以使用lastActive as! String insted的的lastActive as String

修訂

for object in objects { 
      var lastActive = object["lastActive"] 
      if lastActive != nil { 
       let dateFormatter = NSDateFormatter() 
       dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
       let date = dateFormatter.stringFromDate(lastActive as NSDate) 
       println(date) 
      } 
     } 

我上面這段代碼嘗試,如果你已經設置的解析最新的列,它應該工作。

+0

xcode錯誤出現爲「無法轉換AnyObject ?!」在dateFormatter.stringFromDate(newlastActive)的行上鍵入'$ T3':( – user3483697 2014-12-13 09:47:11

+0

)我犯了一個錯誤,應該在stringFromDate中使用lastActive,因爲它將日期保存爲日期 – 2014-12-13 09:51:58

+0

仍然會出現同樣的錯誤。因爲從查詢返回的對象都是「AnyObjects」我相信 – user3483697 2014-12-13 09:59:29

相關問題