ios - 如何使用 plist 将用户进度保存在数组 Swift 中

标签 ios swift nsuserdefaults

大家好,在我的应用程序中,用户单击了一个名为 showfunfact() 的按钮,该按钮使他们在字符串数组中移动。当用户从多任务处理中删除应用程序或关闭手机时,我希望保存用户的位置,然后在重新加载时可以从他们离开的地方开始

var TechfactIndex = 0
let TechnologyfactBook = TechFactBook()

override func viewDidLoad() {
    super.viewDidLoad()
    let defaults = NSUserDefaults.standardUserDefaults()
    TechfactIndex = NSUserDefaults.standardUserDefaults().integerForKey("ByteLocation")
    defaults.setObject(TechfactIndex, forKey: "ByteLocation")
}

@IBAction func showFunFact() {
    if ( UIApplication.sharedApplication().applicationIconBadgeNumber != 0){
        UIApplication.sharedApplication().applicationIconBadgeNumber = 0
    }

    if (TechfactIndex >= TechnologyfactBook.TechfactsArray.count) {  
        self.TechfactIndex = 0   
    }

    TechByteLabel.text = TechnologyfactBook.TechfactsArray[TechfactIndex]
    TechfactIndex++
}

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)
    NSUserDefaults.standardUserDefaults().setInteger(TechfactIndex, forKey: "ByteLocation")
    NSUserDefaults.standardUserDefaults().synchronize()
}

最佳答案

问题是 viewDidDisappear: 与您的规范无关。它不称为“当用户从多任务处理中删除应用程序或关闭手机时”。它不会在电话响起时被调用。当用户点击主页按钮时,它不会被调用。这无关紧要。您将代码放在了错误的位置。

您要做的是注册以在应用停用时收听。那是将信息写入用户默认值的时刻。

关于ios - 如何使用 plist 将用户进度保存在数组 Swift 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32149604/

相关文章:

ios - 具有大型 JSON 响应的 AFNetworking 2.0

ios - 如何在 Apple Watch OS 2 上使用 iPhone 的核心数据?

swift - 加载共享库时出错 : libFoundation. 所以:无法打开共享对象文件:没有这样的文件或目录

ios - NSUserDefaultsDidChangeNotification 和今天的扩展

ios - 如何在iphone 的NSUserDefaults 中动态生成多个 key

objective-c - 添加应在所有 View Controller 中可见的按钮

ios - 在 Mac/Windows 和 Iphone App 之间传输文件

ios - Api 给出错误响应

swift - "Value of optional type ' 设置<字符串>? ' must be unwrapped",但我没有要求可选

ios - 在 NSUserDefaults 中保存继承的对象