UserDefaults не работает с MSMessagesAppViewController - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь сохранить данные в UserDefaults с помощью UIAlertController, но код не может получить данные.

Получить данные

    func displayCreatedPhrases(){
    phrases = uDefaults.stringArray(forKey: "createdPhrases") ?? [String]()
    print(phrases)
   }

Настройка данных

 self.uDefaults.set(textfield.text, forKey: "createdPhrases")
 self.uDefaults.synchronize()
 print("Saved the data!")
 self.phraseTableView.reloadData()

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы устанавливаете string в качестве значения для ключа 'selectedPhrases', а затем запрашиваете uDefaults для возврата массива строк?

func displayCreatedPhrases() {
    phrases = uDefaults.value(forKey: "createdPhrases") as? String
    print(phrases)
}

Приведенный выше код должен работать для вас. Также нет необходимости использовать нижнюю строку ( Ссылка на UserDefaults синхронизировать )

self.uDefaults.synchronize()
1 голос
/ 06 апреля 2020

Причина:

textfield.text относится к типу String?, а не [String]. В своем коде вы сохраняете данные как значение String и извлекаете их как значение [String]. По этой причине получение данных не работает.

Решение:

func displayCreatedPhrases(){
    phrases = uDefaults.string(forKey: "createdPhrases") ?? ""
    print(phrases)
}

Кроме того, phrases должно иметь тип String.

...