【问题标题】:Read plist into nsmutabledictionary, update the dictionary and then save it again将plist读入nsmutabledictionary,更新字典再保存
【发布时间】:2013-02-26 20:43:53
【问题描述】:

我对在目标 C 中保存文件真的很陌生,但我想要完成的是在启动时读取位于文档目录中的 plist 文件,或者如果它不存在则创建它。

它应该被读入 NSMutableDictionary。稍后在应用程序中,我应该能够将项目保存到 NSMutableDict,并将类别作为键 + 文本。

viewWillUnload 中启动前的 NSMutableDictionary 应该再次保存到 plist 文件中。

我已经创建了 plist,但我需要一种以正确方式写入 NSMutableDictionary 的方法(类别和我的 result.text 字符串。

我还需要将 NSMutableDictionary 保存到 plist 文件中,并在启动时将 plist 读入字典。

这方面的一些帮助会很棒 :D

谢谢大家。

在保存文件 void 我正在这样做:

    storeDict = [[ NSMutableDictionary alloc]
                 init];
    [storeDict setObject:resultText.text forKey:@"kvitto"];
    [storeDict setObject:kategori forKey:@"kategori"];
    [storeDict writeToFile:[self saveFilePath] atomically:YES];

saveFilePath 看起来像这样:

- (NSString *) saveFilePath {
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [[path objectAtIndex:0] stringByAppendingString:@"savefile.plist"];
}

这些值是从用户扫描的代码中收集的字符串,因此不必担心它们。 那么我如何正确保存这个,保留savefile.plist中已经存在的数据。

再次感谢

【问题讨论】:

    标签: xcode plist nsmutabledictionary


    【解决方案1】:

    如果您希望字典中包含的字典和数组也是可变的,请执行以下操作:

    NSData *data = [NSData dataWithContentsOfFile:path];
    NSError *error;
    storeDict = 
        [NSPropertyListSerialization 
                propertyListWithData:data 
                             options:NSPropertyListMutableContainersAndLeaves
                              format:nil
                               error: &error];
    

    【讨论】:

      【解决方案2】:

      为什么不能使用 writeToFile api?在这里写问题之前,您必须谷歌或检查 NSMutableDictionary 的苹果文档。

      [dict writeToFile:path atomically:YES];
      

      加载保存的字典

       dict = [NSMutableDictionary dictionaryWithContentsOfFile:path];
      

      编码愉快!

      【讨论】:

      • 是的,问题本身很糟糕,真正的问题是如何将项目添加到字典本身。当我像这样将 viewDidLoad 中的项目添加到字典中时(如果列表不存在) [dict setValue:@"pizza" forKey:@"food"];然后当用户按下保存按钮时,我尝试做同样的事情,但选择了当前值和类别。然后当我 nslog 字典时,我只看到添加到 saveTap void 中的值,而不是 viewDidLoad 中的值,这才是真正的 q :)
      • 哦,你就在这里,我们用代码更新上面的帖子:
      • 如果字典本身包含其他字典或数组,那么这些将是可变的。使用NSPropertyListSerialization
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多