我想将解析列“createdAt
”查询并将其转换为一个字符串,该字符串显示在用户界面上作为标签向用户显示产品已过帐并过期。如何查询并将Parse.com日期转换为NSDate /字符串
在stackoverflow上也有类似的问题,但没有人帮助我和所有人都给了我错误和崩溃。
我正在使用TableViewController
类,我在查询2件东西:productName
和timeCreated
。 (该productName
我能没有问题在单元格中显示。)
我试图获取日期的几种方法:
这是第一种方式。我试图查询它与其他解析对象:
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
的字符串。林没有把它放入一个数组,但我假设我应该如果我想使用它?这是我试过,但没有帮助的链接:How to convert a parse date object to a 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)
为什么给我的错误?关于谁来查询它并将其转换为字符串(在数组中),我可以使用的任何想法?
任何帮助,非常感谢。
致命错误:意外发现零而展开的可选值:这是提出和回答百倍。这是基本的Swift行为。如果你不知道为什么会发生这种情况,你需要学习Swift。 – gnasher729
我明白为什么会这样。但是,我不知道如何摆脱它并实际查询日期。那是我的问题。 – lukaivicev