NSUserdefaults 不适用于 iPhone 6
NSUserdefaults not working on iPhone 6
这是我的问题。在我的应用程序中,我有一个教程屏幕,它由 NSUserDefaults 控制,具体来说,就是这行代码
let userDefaults = NSUserDefaults.standardUserDefaults()
let hasSeenIntro = userDefaults.boolForKey("hasSeenIntro")
if !hasSeenIntro {
showIntro()
}
直到最近这一切都很好。在 iPhone 6 模拟器以及我的物理 iPhone 6 上,教程会在每次应用程序启动时不断弹出。这不会发生在 iPhone 6 plus、iPhone 5 或 4s 模拟中。
有替代方案吗?我不知道为什么这只会发生在 iPhone 6 而不会发生在其他设备上。
下面是 showIntro() 代码。以上代码放在viewdidload.
func showIntro() {
let storyboard = UIStoryboard(name: "Intro", bundle: nil)
let introViewController = storyboard.instantiateInitialViewController() as! BWWalkthroughViewController
let page1 = storyboard.instantiateViewControllerWithIdentifier("page1") as! UIViewController
introViewController.addViewController(page1)
let page2 = storyboard.instantiateViewControllerWithIdentifier("page2") as! UIViewController
introViewController.addViewController(page2)
let page3 = storyboard.instantiateViewControllerWithIdentifier("page3") as! UIViewController
introViewController.addViewController(page3)
let page4 = storyboard.instantiateViewControllerWithIdentifier("page4") as! UIViewController
introViewController.addViewController(page4)
let page7 = storyboard.instantiateViewControllerWithIdentifier("page7") as! UIViewController
introViewController.addViewController(page7)
let page5 = storyboard.instantiateViewControllerWithIdentifier("page5") as! UIViewController
introViewController.addViewController(page5)
introViewController.delegate = self
self.presentViewController(introViewController, animated: true, completion: nil)
}
在showIntro()
里面你需要添加:
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setBool(true, forKey:"hasSeenIntro")
userDefaults.synchronize()
可能在某些设备上您在之前的版本中有此代码,因此 bool 已在用户默认设置中设置。您可以通过在模拟器上进行重置来测试这一点。在从不 运行 那些旧代码的设备上,介绍总是弹出。
这是我的问题。在我的应用程序中,我有一个教程屏幕,它由 NSUserDefaults 控制,具体来说,就是这行代码
let userDefaults = NSUserDefaults.standardUserDefaults()
let hasSeenIntro = userDefaults.boolForKey("hasSeenIntro")
if !hasSeenIntro {
showIntro()
}
直到最近这一切都很好。在 iPhone 6 模拟器以及我的物理 iPhone 6 上,教程会在每次应用程序启动时不断弹出。这不会发生在 iPhone 6 plus、iPhone 5 或 4s 模拟中。
有替代方案吗?我不知道为什么这只会发生在 iPhone 6 而不会发生在其他设备上。
下面是 showIntro() 代码。以上代码放在viewdidload.
func showIntro() {
let storyboard = UIStoryboard(name: "Intro", bundle: nil)
let introViewController = storyboard.instantiateInitialViewController() as! BWWalkthroughViewController
let page1 = storyboard.instantiateViewControllerWithIdentifier("page1") as! UIViewController
introViewController.addViewController(page1)
let page2 = storyboard.instantiateViewControllerWithIdentifier("page2") as! UIViewController
introViewController.addViewController(page2)
let page3 = storyboard.instantiateViewControllerWithIdentifier("page3") as! UIViewController
introViewController.addViewController(page3)
let page4 = storyboard.instantiateViewControllerWithIdentifier("page4") as! UIViewController
introViewController.addViewController(page4)
let page7 = storyboard.instantiateViewControllerWithIdentifier("page7") as! UIViewController
introViewController.addViewController(page7)
let page5 = storyboard.instantiateViewControllerWithIdentifier("page5") as! UIViewController
introViewController.addViewController(page5)
introViewController.delegate = self
self.presentViewController(introViewController, animated: true, completion: nil)
}
在showIntro()
里面你需要添加:
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setBool(true, forKey:"hasSeenIntro")
userDefaults.synchronize()
可能在某些设备上您在之前的版本中有此代码,因此 bool 已在用户默认设置中设置。您可以通过在模拟器上进行重置来测试这一点。在从不 运行 那些旧代码的设备上,介绍总是弹出。