【问题标题】:Updating plist file via code通过代码更新 plist 文件
【发布时间】:2016-04-10 16:37:28
【问题描述】:

我在包中创建了一个 plist 文件,我正在尝试将用户信息更新到 plist 中。我知道我应该将包中的 plist 文件复制到文档目录,然后从那里编辑它,但我还有几个问题:

  1. 当我将 plist 文件复制到文档目录时,它是永久的吗?我的意思是,如果我关闭程序再打开它,我可以简单地编辑文档目录中的plist文件,对吧?

  2. 如果是这样,是否意味着我应该只在第一次启动应用程序时执行将 plist 文件复制到文档目录的代码?

  3. /main question/ 因为我想要一个空白的 plist 文件供用户使用来更新他们的数据,我是否应该在第一次启动时简单地创建一个 plist 文件?如果没有围绕捆绑包和东西进行复制会容易得多。

    我的意思是,首先在包中创建一个 plist 文件有什么意义?反正我们都会把它复制到文档目录中,那为什么不直接在代码中创建一个呢?

【问题讨论】:

    标签: ios plist


    【解决方案1】:

    我不完全确定您要实现什么,但您应该将 plist 视为全局常量的位置,而不是应该在运行时更新的东西。

    也许你应该看看这个: NSUserDefaults

    【讨论】:

    • 感谢您回答 Roee。 NSUserDefaults 很有用,但在这种情况下,plist 可能更适合我的程序。再次感谢您的快速响应
    【解决方案2】:
    1. 是的。写入文件是永久性的,只要您显然不将文件删除/移动到其他地方。

    2. 这是一个有效的选项

    3. 是的。如果您需要一个空白文件,则不需要捆绑包中的它。一个更好的主意是在需要时创建它(当有东西要写时)。通常文件创建是这样管理的

      • 检查文件是否存在
      • 如果没有,请创建它。
      • 使用该文件。

    如果您需要一个模板文件(其中已经写了一些东西),那么从包中复制一份更合适。但即便如此,许多开发人员还是喜欢从代码中完成所有工作,这并不是一项繁重的任务,而且它会迫使您从一开始就创建/准备正确的对象和方法。

    就像 Rooe N 所说的,NSUserDefaults 是一个属性列表,所以如果你在谈论非常简单的数据,比如用户名和我上次登录的日期,你可以将它存储在那里.

    请注意,每次加载应用程序时,NSUserDefaults 都会一直加载,因此您不想将其用作数据库。但是由于您要使用 .plist,我假设您已经排除了 DB。

    【讨论】:

    • 我想知道在初始启动期间创建一个空白 plist 文件将如何发挥有用的作用。如果/当实际上有一些东西要保存时,为什么不简单地创建文件?
    • 谢谢 Zil 和 jlehr!这解决了过去整个星期困扰我的问题!我猜 if(file does not exist){create file} 逻辑比“第一次启动时创建文件”逻辑更适合我的程序。再次感谢!
    • 这个逻辑其实很重要,不知道为什么写这篇文章的时候没有想到。当涉及到编程时,这个概念通常适用于所有事情:除非您确实需要这样做,否则不要做某事。除了可能会提前执行的长时间运行的任务,因为您不希望用户等待超过一秒钟。否则,最新的通常更好,将所有内容保留在应有的位置,并且您不会浪费资源。
    • 我同意。这个逻辑是如此的简洁和简单,但我之前甚至都没有考虑过。再次感谢您的出色回答。当我获得足够的声望时,我会回来支持你的答案。
    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多