如何查询和转换Parse.comdate到NSDate /string

我想把parsing列“ createdAt ”,查询它,并把它变成一个string,在UI上显示为一个标签,以显示用户何时发布产品和何时过期。

在stackoverflow上也有类似的问题,但没有人帮助我,所有的都给了我错误和崩溃。

我正在使用一个TableViewController类,我查询2件事情: timeCreatedtimeCreated 。 ( productName我可以显示在单元格中没有问题。)

我已经尝试了几种获取date的方法:

这是第一种方法。 我试着用另一个Parse对象来查询它:

 var productName = [String]() var timeCreated = [NSDate]() //Arrays above the viewDidLoad() to store the productName and the timeCreated override func viewDidLoad() { super.viewDidLoad() var query = PFQuery(className: "ProductInfo") query.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in if let objects = objects { self.productName.removeAll(keepCapacity: true) self.timeCreated.removeAll(keepCapacity: true) for object in objects { self.productName.append(object["pName"] as! String) self.timeCreated.append(object["createdAt"] as! NSDate) print(self.productName) print(self.timeCreated) self.tableView.reloadData() } } }) } 

我正在尝试的第二种方法是使用此代码独立于productName对象单独查询它。 最终将其格式化,然后使用stringFromDate将其转换为string。 林不是把它放入一个数组,但我假设我应该以及如果我想使用它? 这是我试过的链接,但没有帮助: 如何将parsingdate对象转换为string? 喜欢这个:

  var dateQuery = PFQuery(className:"ProductInfo") dateQuery.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in if let objects = objects { for object in objects { var createdAt = object["createdAt"] if createdAt != nil { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" let date = dateFormatter.stringFromDate(createdAt as! NSDate) print(date) } } } }) 

这也在viewDidLoad方法中,但在第一个查询的下方。

我得到的错误是这样的: fatal error: unexpectedly found nil while unwrapping an Optional value的两种方式。

它以我尝试的第一种方式突出显示了这一行: self.timeCreated.append(object["createdAt"] as! NSDate)

而这let date = dateFormatter.stringFromDate(createdAt as! NSDate)方式我做到了这一点let date = dateFormatter.stringFromDate(createdAt as! NSDate)

为什么给我一个错误? 关于谁来查询它并将其转换为string(在数组中)的任何想法,我可以使用?

任何帮助是极大的赞赏。

在date创build像PFObject的私人参数,所以你应该使用提供的访问器函数,而不是像一个通用的容器试图访问它。 所以,改变你的代码:

 self.timeCreated.append(object.createdAt as NSDate) 
 let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM'-'dd'-'yyyy'" let date = dateFormatter.stringFromDate((<yourParseObjectHere>.createdAt as NSDate?)!) yourLabel.text = date