Im делает простое приложение планировщика, которое отправляет уведомления пользователям в определенное время, когда происходят события.Как выводить даты из массива в Swift?
Я создал таблицу для хранения данных, и я сохраняю отдельные значения внутри массива.
Я столкнулся с проблемой вывода NSDates, которые я сохранил внутри своего массива.
import UIKit
extension NSDate {
convenience init(dateString:String, format:String="h-mm a") {
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone.defaultTimeZone()
formatter.dateFormat = format
let d = formatter.dateFromString(dateString)
self.init(timeInterval:0, sinceDate:d!)
}
class MedicineTableViewController: UITableViewController {
//MARK Properties
var medicines = [Medicine]()
override func viewDidLoad() {
super.viewDidLoad()
loadSampleMedicine()
}
func loadSampleMedicine() {
let medicine1 = Medicine(name: "Inhaler", time1: NSDate(dateString: "08:00 a"), time2: NSDate(dateString: "10:00 a"), time3: NSDate(dateString: "02:00 p"), time4: NSDate(dateString: "06:00 p"), time5: NSDate(dateString: "10:00 p"))
medicines.append(medicine1!)
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return medicines.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "MedicineTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MedicineTableViewCell
let medicine = medicines[indexPath.row]
cell.nameLabel.text = medicine.name
cell.takeAt.text = "Take At:"
cell.time1Label.text = medicine.time1
cell.time2Label.text = medicine.time2
cell.time3Label.text = medicine.time3
cell.time4Label.text = medicine.time4
cell.time5Label.text = medicine.time5
return cell
}
Это возвращает ошибку «Не удается присвоить значение„NSDate“к значению типа String?»
Есть ли способ конвертировать эти NSDates в строки?
У меня появилось другое возможное решение, но оно включает в себя переработку всего приложения, поэтому я бы предпочел избежать их, если это возможно.
Моим возможным решением является переработать данные, которые пользователь вводит в качестве pickerView, который имеет 3 столбца, один из которых циклически перемещает числа от 01 до 12, второй 00 до 59 и третий am и pm. а затем взять общую строку и сохранить ее в массиве. Это позволит мне легко распечатать его, поскольку это всего лишь сохраненная строка. Затем, когда я выхожу на сцену, на которой я создаю систему уведомлений, я мог бы использовать функцию dateString для преобразования из строк в даты и затем программировать мои уведомления.
В общем, я хотел бы знать, могу ли я просто распечатать NSDates, хранящиеся в моем массиве, или если нет, если мое возможное решение будет работать?
Спасибо.
* «Есть ли способ, чтобы преобразовать эти NSDates в строки?» * - Да, это называется NSDateFormatter, который имеет свой собственный тег здесь: [тег: nsdateformatter]. Это также [документация] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1) от Apple. –
Хорошо спасибо за помощь :) – gibby97