Приложение работает на моем телефоне, но не на любом другом устройстве - PullRequest
0 голосов
/ 09 июля 2019

Я пытался решить эту проблему в течение нескольких дней перед отправкой приложения, так что здесь все идет.Я разрабатываю приложение, которое использует 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, строка должна быть сохранена и показана в консоли, но по неизвестной причине она не работает.Извините, если мне было неясно

1 Ответ

0 голосов
/ 09 июля 2019

Я думаю, вы можете попробовать:

UserDefaults.standard.synchronize()

может быть ... * * 1004

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...