【问题标题】:plist data after an update更新后的 plist 数据
【发布时间】:2015-06-14 01:09:43
【问题描述】:

我创建了一个 plist,用于在我的应用中存储所有用户的数据,例如硬币数量、最佳分数、内部商店的一些衣服等等。而现在,在发布前 1 天,我意识到在更新应用程序后,所有用户的数据都会丢失。我说的对吗?

如果我不是,那么 plist 是如何工作的?比方说,在我的应用程序的 1.0 版中,我有一个 plist,其中包含用户的硬币数量。然后我决定将钻石数量添加到我的 plist 中,以便 2.0 版中的 plist 包含硬币和钻石。硬币和钻石的默认值为 0。

所以,用户下载了 1 个版本,现在他有 0 个硬币。他玩了一会儿,赚了100个硬币。然后他将应用程序更新到 2 版本。在这种情况下 plist 会发生什么?会不会被删除,添加新的,用户默认0金币0钻石?还是根本不会更新?或者他仍然有 100 个硬币,但有 0 个钻石?

总而言之,我只是想知道其他开发者如何在设备本地存储用户数据,而不使用外部数据库等。

附:这就是我创建 plist 的方式:

    var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
    var path = paths.stringByAppendingPathComponent("UserInfo.plist")
    var data = NSMutableDictionary(contentsOfFile: path)

    var fileManager = NSFileManager.defaultManager()
    if (!(fileManager.fileExistsAtPath(path)))
    {
        var bundle : NSString = NSBundle.mainBundle().pathForResource("UserInfo", ofType: "plist")!
        fileManager.copyItemAtPath(bundle as String, toPath: path, error:nil)
    }

【问题讨论】:

    标签: ios swift plist storing-data


    【解决方案1】:

    现在,在发布前 1 天,我意识到更新应用后所有用户的数据都会丢失。我说的对吗

    不,不一定。如果数据存储在用户默认值中或作为文件保存在应用程序沙箱的非易失区域(例如 Documents 目录)中,则仅升级应用程序对其没有影响。

    【讨论】:

    • 感谢您的回答。好吧,由于这个事实,在我之前描述的情况下,用户在更新后仍然会有 100 个硬币,但是当我尝试从我的代码中调用钻石时,他会得到一个异常,因为 plist 没有受到影响而且它没有不包括钻石?应该如何更新我的 plist?
    • 这不是你问的。您问更新是否会导致数据丢失,我相信我的回答是正确的。我告诉过您,您保存的文件通过更新保持不变。当然,如果 you 然后用坏数据覆盖你自己的文件,或者如果 you 未能保存必要的数据,那是你的逻辑问题。但那是你的错,不是更新的错。创建/保存文件的逻辑是另一回事。如果您有新/不同的问题,请提出新问题!
    • 其实这是我的问题的一部分。但我明白你的意思。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多