将plist读入nsmutabledictionary,更新字典,然后再次保存

时间:2013-03-11 15:34:10

标签: xcode plist nsmutabledictionary

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

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

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

我创建了plist但是我需要一种方法以正确的方式写入NSMutableDictionary(category和my result.text string。

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

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

谢谢你们。

在savefile中,我这样做:

    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中已存在的数据。

再次感谢

2 个答案:

答案 0 :(得分:2)

为什么不能使用writeToFile api?在此处撰写问题之前,您必须google或查看NSMutableDictionary的Apple文档。

[dict writeToFile:path atomically:YES];

加载已保存的词典

 dict = [NSMutableDictionary dictionaryWithContentsOfFile:path];

快乐的编码!

答案 1 :(得分:2)

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

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