我想將解析列「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