Я пытался решить эту проблему в течение нескольких дней перед отправкой приложения, так что здесь все идет.Я разрабатываю приложение, которое использует UserDefaults для сохранения строки из другого контроллера представления одним нажатием кнопки и для передачи ее в виде таблицы в следующем контроллере представления.Однако по неизвестной причине приложение отлично работает на iPhone X (и iPhone XR), но не сохраняет строку и не реагирует на нажатие кнопки всякий раз, когда я запускаю приложение на другой модели iPhone.Вот мой код:
// FirstViewController
@IBAction func buttonIsPressed(_ sender: Any) {
if var items = UserDefaults.standard.object(forKey: "items") as? [String]{
var newitems = textField.text!.components(separatedBy: CharacterSet(charactersIn: ", []()\n.:"))
print(items)
if newitems.contains(""){
newitems.removeAll { $0 == ""}
items.append(contentsOf: newitems)
UserDefaults.standard.set(items, forKey: "items")
}else{
let newitems = textField.text!.components(separatedBy: CharacterSet(charactersIn: ", []()\n.:"))
UserDefaults.standard.set(newitems, forKey: "items")
}
textField.text = ""
}
}
// SecondViewController
var scannedText: String = "Detected text can be edited here." {
didSet {
textView.text = scannedText
let str = scannedText.uppercased()
let allergens = UserDefaults.standard.array(forKey: "items") as! [String]
let string = str.components(separatedBy: CharacterSet(charactersIn: ", []()\n.:"))
print(string)
for allergen in allergens{
if string.contains(String(Substring(allergen))) == true {
print("I found the string \(allergen)")
allegenLabel.text = "Not safe"
allegenLabel.alpha = 1 //Make the label visible
allegenLabel.textColor = .red
// let attributedString = allergen.highlight([allergen], this: .red)
// textView.attributedText = attributedString
allergensFound.append(allergen)
print(allergensFound)
}
if string.contains(String(Substring(allergen))) == false {
allegenLabel.text = "Safe"
allegenLabel.alpha = 1 //Make the label visible
allegenLabel.textColor = UIColor.colorGreen
// table.reloadData()
}
}
}
}
Пожалуйста, спросите меня, нужно ли вам дополнительное описание в коде.Спасибо!
Редактировать: Точнее, я создаю код, который найдет строку в массиве строк, который затем уведомит пользователя с помощью AllegenLabel.text.Все приложение разделено на разные контроллеры представления.Пользователь вводит строку, используя текстовое поле в FirstViewController, а затем эта строка должна быть найдена в другом массиве строк в SecondViewController.По какой-то причине UserDefaults успешно сохраняет и получает строку на моем телефоне, но не работает на разных устройствах.Например, всякий раз, когда я нажимаю кнопку сохранения в FirstViewController, строка должна быть сохранена и показана в консоли, но по неизвестной причине она не работает.Извините, если мне было неясно