Как сохранить дату в userdefaults? - PullRequest
0 голосов
/ 20 апреля 2019

Я бы хотел записать историю ее ввода в текстовое поле.Я намерен зарегистрировать это в UserDefaults.Но когда я пытаюсь сохранить его с помощью UserDefaults, «не удается присвоить значение типа« nsdate »?» Типу «String» «Ошибка.Я не думаю, что он принимает данные текстового поля, потому что это строка.И как мне сохранить историю в памяти?

formatteddate и formatteddate2 выдают эту ошибку.Дата выводится следующим образом: 20/04/2019 20: 23

let token = try? keychain.getString("chipnumbernew")
        chip1InfoString = token

        var time = NSDate()
        var formatter = DateFormatter()
        formatter.dateFormat = "dd/MM/yyyy HH:mm"
        var formatteddate = formatter.string(from: time as Date)
        var formatteddate2 = formatter.string(from: time as Date)

        timertextNew.text = formatteddate
        timertext2New.text = formatteddate2


        let RetrivedDate = UserDefaults.standard.object(forKey: "timertext") as? NSDate

       formatteddate = RetrivedDate

        let RetrivedDate2 = UserDefaults.standard.object(forKey: "timertext2") as? NSDate
        formatteddate2 = RetrivedDate2

Ответы [ 3 ]

0 голосов
/ 20 апреля 2019

Вы можете установить дату и сохранить постоянство с пользовательскими настройками по умолчанию:

UserDefaults.standard.set(Date(),forKey:”keyname”) as? Date

Не забудьте использовать оператор условного приведения? чтобы избежать аварии.

Чтобы сохранить дату в виде строки, вы можете сделать это, выполнив следующую запись: Преобразование NSDate в строку в iOS Swift

0 голосов
/ 20 апреля 2019

Если вы хотите отобразить только значение даты, вы можете преобразовать и сохранить его в виде строки, в противном случае вы конвертируете / форматируете его после прочтения, в любом случае вы должны убедиться, что вы используете тот же тип при сохранении и чтении

//save as Date
UserDefaults.standard.set(Date(), forKey: key)

//read
let date = UserDefaults.standard.object(forKey: key) as! Date
let df = DateFormatter()
df.dateFormat = "dd/MM/yyyy HH:mm"
print(df.string(from: date))

// save as String
let df = DateFormatter()
df.dateFormat = "dd/MM/yyyy HH:mm"
let str = df.string(from: Date())
UserDefaults.standard.setValue(str, forKey: key)

// read
if let strOut = UserDefaults.standard.string(forKey: key) {
    print(strOut)
}
0 голосов
/ 20 апреля 2019

Ваша проблема в том, что вы извлекаете NSDate из пользовательского хранилища по умолчанию, а затем пытаетесь присвоить их строке (formatteddate).

Попробуйте это;

  formatteddate = formatter.string(from: RetrivedDate as Date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...