我想把解析列" createdAt
",查询它并将其变成一个字符串,在UI上显示为标签,以便在产品发布时向用户显示什么时候到期。
stackoverflow上有类似的问题,但没有一个帮助过我,所有人都给了我错误和崩溃。
我正在使用TableViewController
课程,我正在查询两件事:productName
和timeCreated
。 (productName
我能够毫无问题地在单元格中显示。)
我已经尝试了几种获取日期的方法:
这是第一种方式。我尝试用另一个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
的字符串。我不是把它放到一个数组中,但是我假设我也应该使用它?这是我尝试但没有帮助的链接: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)
为什么它会给我一个错误?关于谁查询它并将其转换为我可以使用的字符串(在数组中)的任何想法?
非常感谢任何帮助。
答案 0 :(得分:1)
在日期创建的类似于PFObject
的私有参数,因此您应该使用提供的访问器功能,而不是像通用容器一样尝试访问它。因此,请将代码更改为:
self.timeCreated.append(object.createdAt as NSDate)
答案 1 :(得分:1)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM'-'dd'-'yyyy'"
let date = dateFormatter.stringFromDate((<yourParseObjectHere>.createdAt as NSDate?)!)
yourLabel.text = date