2014-12-13 129 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

相关问题