该应用程序可以在我的手机上运行,​​但不能在任何其他设备上运行

时间:2019-07-08 22:44:26

标签: ios swift

在提交应用程序之前,我尝试解决了这一问题几天,所以就到这里了。我正在开发一个使用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 :(得分:0)

我认为您可以尝试:

UserDefaults.standard.synchronize()

也许...