如何查询和转换Parse.comdate到NSDate /string
我想把parsing列“ createdAt
”,查询它,并把它变成一个string,在UI上显示为一个标签,以显示用户何时发布产品和何时过期。
在stackoverflow上也有类似的问题,但没有人帮助我,所有的都给了我错误和崩溃。
我正在使用一个TableViewController
类,我查询2件事情: timeCreated
和timeCreated
。 ( 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