【问题标题】:Write data to plist将数据写入 plist
【发布时间】:2011-05-26 20:29:49
【问题描述】:

我想从 plist 中读取数据,添加一些元素并将数据写入 plist。(更新 plist)。

我想让 plist 保存一个字典数组,将这个数组读入我的应用程序,添加字典,然后将数组写回 plist。

这是怎么做到的?我也不确定在应用程序首次启动时在哪里以及如何创建 plist。还是应该从一开始就放在捆绑包中?

我不确定的另一件事是 plist 字典是否可以保存,例如CLLocations 作为键的值?它会被正确保存还是需要将 CLLocation 分解为 lat 和 lon 值?

谢谢

【问题讨论】:

    标签: iphone mapkit plist


    【解决方案1】:

    从 plist 创建字典的最简单方法是使用方法 dictionaryWithContentsOfFile:,例如,从您的资源中加载 plist:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
    

    写一个plist同样简单:

    [dict writeToFile:filePath atomically:YES];
    

    (请注意,您无法写入应用程序的资源,因此您必须创建不同的路径,例如在您的 Documents 目录中,请参阅NSSearchPathForDirectoriesInDomains

    Plist 只能包含 NSDictionaryNSArrayNSNumberNSString 的实例,因此您不能在没有转换的情况下将 CLLocation 放入 Plist。如果您需要保存非 Plist 对象,请查看 NSKeyedArchiver。它可以从采用NSCoding 协议(CLLocation 确实如此)的任何东西创建文件和NSData 对象。

    【讨论】:

    • 字典数组呢?除了使用数组之外,它会和上面一样吗?这会很好,因为数组包含 NSDictionaries?
    • 字典数组很好,数组数组,数字字典也很好......你明白了。
    • @omz 我尝试了这种读取方法,但由于某种原因,当我尝试在真实设备上写入时,它会返回旧数据。有什么想法吗?
    • @MikeIsrael 我猜您正在尝试写入您的应用程序包。这在设备上是不可能的。您必须先将文件复制到 Documents 目录中。
    • @omz 谢谢,是的,这就是问题所在,得到它的工作 +1 以获得很好的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多