警报每次都会打开,而不仅仅是第一次

时间:2017-06-09 06:15:36

标签: ios swift

我希望我的警报仅在第一次在新设备上启动应用时打开,但每次应用程序在多任务处理时关闭并再次打开时,它都会打开。如果有人能帮忙,我附上了我的代码吗?

    override func viewDidAppear(_ animated: Bool) {
        // alert first time app is opened
        // making of alert

        let alert = UIAlertController(title: "Navigation", message: "Tap Right Hand Side of Screen For Next Quote, Left Hand Side To Go Back", preferredStyle: UIAlertControllerStyle.alert)

        //add ok button
        alert.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default, handler: nil))

        // detect if first launch
        let launchedBefore = UserDefaults.standard.bool(forKey: "launcedBefore")
        if launchedBefore {
        }
        else {
            self.present(alert, animated: true, completion: nil)
            UserDefaults.standard.set(true, forKey: "launchedBefore")
        }
    }

2 个答案:

答案 0 :(得分:0)

您的密钥中有拼写错误...在撰写时您使用的是密钥launchedBefore,但在阅读时您使用的是launcedBefore

答案 1 :(得分:0)

这就是我讨厌使用UserDefaults的原因。有时候你会犯错误而你无法分辨它发生在哪里。

使用UserDefaults的最佳方法是将所有键创建为常量,因此访问UserDefaults的两行看起来更清晰:

let launchedBefore = UserDefaults.standard.bool(forKey: kLaunchedBeforeKey)

UserDefaults.standard.set(true, forKey: kLaunchedBeforeKey)

这样编译器会在你输入拼写错误时告诉你。