我希望我的警报仅在应用程序首次在新设备上启动时打开,但当前每次在多任务处理中关闭应用程序并再次打开时,它都会打开。我已经附上了我的代码,如果有人能够提供帮助,请?
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")
}
}
您的密钥中有拼写错误...在编写它时,您正在使用键launchedBefore
但在阅读它时,您使用的是launcedBefore
这就是我讨厌使用UserDefaults的原因。有时你会打错别字,但你无法分辨它在哪里发生。
使用 UserDefaults的最佳方法是将所有键创建为常量,因此访问 UserDefaults 的两行看起来更简洁,如下所示:
let launchedBefore = UserDefaults.standard.bool(forKey: kLaunchedBeforeKey)
和
UserDefaults.standard.set(true, forKey: kLaunchedBeforeKey)
这样,编译器会在您输入错误时通知您。