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 已在用户默认设置中设置。您可以通过在模拟器上进行重置来测试这一点。在从不 运行 那些旧代码的设备上,介绍总是弹出。