Ios 更新后的plist数据

Ios 更新后的plist数据,ios,swift,plist,storing-data,Ios,Swift,Plist,Storing Data,我创建了一个plist,在我的应用程序中存储所有用户的数据,如硬币数量、最佳分数、来自内部商店的一些衣服等等。现在,在发布前一天,我意识到在更新应用程序之后,所有用户的数据都将丢失。我说得对吗 如果我不是,plists是如何工作的?比方说,在我的应用程序1.0版中,我有一个由用户硬币数量组成的plist。然后我决定在plist中添加一定数量的钻石,以便版本2.0中的plist由硬币和钻石组成。硬币和钻石的默认值为0 所以,用户下载了1个版本,现在他有了0个硬币。他玩了一会儿,赚了100个硬币。然

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

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

所以,用户下载了1个版本,现在他有了0个硬币。他玩了一会儿,赚了100个硬币。然后他将应用程序更新为2版本。在这种情况下,普利斯特会怎么样?它会被删除,新的会被添加,用户会有默认的0枚硬币和0颗钻石吗?或者根本不会更新?或者他还有100枚硬币,但没有钻石

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

另外,这就是我创建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)
    }
现在,在发布前一天,我意识到在更新应用程序之后,所有用户的数据都将丢失。我说得对吗


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

谢谢您的回答。好吧,由于这个事实,在我前面描述的情况下,用户在更新后仍然会有100个硬币,但是当我尝试从代码中调用diamonds时,他会得到一个异常,因为plist没有受到影响,并且它不包括diamonds?你应该如何更新我的plist?你不是这么问的。您询问更新是否会导致数据丢失,我相信我的回答是正确的。我告诉过你,你保存的文件在更新后仍然完好无损。当然,如果您随后用坏数据覆盖您自己的文件,或者如果您无法保存必要的数据,那么这就是您的逻辑中的一个问题。但那是你的错,不是更新的错。创建/保存文件的逻辑是另一回事。如果您有新的/不同的问题,请提出新问题!实际上这是我问题的一部分。但我明白你的意思。谢谢你的回答。