Я хочу взять столбец анализа «createdAt
», запросить его и внести в строку, отображаемую в пользовательском интерфейсе, в качестве метки, чтобы показать пользователю, когда продукт был опубликован и когда он истекает.Как запросить и преобразовать дату Parse.com в NSDate/String
Есть аналогичные вопросы о stackoverflow, но никто из них не помог мне, и все дали мне ошибки и сбои.
Я использую класс TableViewController
, и я запрашиваю 2 вещи: productName
и timeCreated
. (The 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)
и эту линию для 2-го, как я это сделал: let date = dateFormatter.stringFromDate(createdAt as! NSDate)
Почему это дает мне ошибку? Любые идеи о том, кто его запрашивает и преобразует в строку (в массиве), которую я могу использовать?
Любая помощь очень ценится.
фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение: Это было предложено и ответил на сто раз. Это основное поведение Swift. Если вы не знаете, почему это происходит, вам нужно изучить Swift. – gnasher729
Я понимаю, почему это происходит. Однако я не знаю, как избавиться от него и действительно запросить дату. Это моя проблема. – lukaivicev