Как сохранить содержимое ярлыка - PullRequest
0 голосов
/ 03 января 2019

в моем TodoList у меня есть ярлык, который при добавлении чего-либо в Todo показывает дату дня.

Как я могу сохранить это? потому что, когда я открываю свое приложение, у меня всегда есть дата и время, когда я открываю его.

Вот код этикетки с датой:

class TableViewCell: UITableViewCell {

    @IBOutlet weak var Data: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        Data.text = String(describing: DateFormatter())

        UserDefaults.standard.string(forKey: "Data")

        let dataFormatter = DateFormatter()
        dataFormatter.dateFormat = "dd/MM/yyyy H:mm a"
        Data.text = dataFormatter.string(from: .init())

    }
}

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Вы можете использовать UserDefaults.

UserDefaults.standard.set(value: Any?, forKey: String)

Так что, когда вы хотите сохранить, вы можете сделать

UserDefaults.standard.set(value: YourValue, forKey: "Data")
0 голосов
/ 03 января 2019

Сначала создайте глобальную lazy переменную для DateFormatter, поскольку вы не хотите создавать новую каждый раз, когда вам нужно задать текст.

lazy var dateFormatter: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd/MM/yyyy H:mm a"
    return formatter
}()

, затем вы можете установить text изпометить как это (переименуйте выход для UILabel, чтобы начать с маленькой заглавной буквы)

data.text = dateFormatter.string(from: yourDate)

Теперь для манипуляции с Date объектом с UserDefaults

Экономия:

UserDefaults.standard.set(yourDate, forKey: "date")

Получение:

if let date = UserDefaults.standard.object(forKey: "date") as? Date {
    ... // here you can use `date` of type `Date`
}

Один совет в конце.Поскольку вы используете UITableViewCell, я предполагаю, что у вас есть более одного Date объекта, сохраненного в UserDefaults.Я бы порекомендовал вам начать использовать некоторые базы данных, такие как Core Data или Realm .

0 голосов
/ 03 января 2019

Переместите код внутри setSelected в awakeFromNib

также я ожидаю, что это UserDefaults.standard.string(forKey: "Data") вернет значение, поэтому где-то у вас должно быть UserDefaults.standard.set(value:"----Any value", forKey: "Data")

 guard let res =  UserDefaults.standard.object(forKey: "Data")  as? Date else { return }
 let dataFormatter = DateFormatter()
 dataFormatter.dateFormat = "dd/MM/yyyy H:mm a"
 Data.text = dataFormatter.string(from:res)

Для урегулирования

 UserDefaults.standard.set(Date(), forKey: "Data")

@IBOutlet weak var Data: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    UserDefaults.standard.set(Date(), forKey: "Data") // this line need to be placed where you need to store the date
    guard let storedDate = UserDefaults.standard.object(forKey: "Data") as? Date  else { return } // here you read the stored date
    let dataFormatter = DateFormatter()
    dataFormatter.dateFormat = "dd/MM/yy H:mm a"
    Data.text = dataFormatter.string(from:storedDate)

}
...