如何在iPhone中添加和读取项目到plist?

时间:2011-09-12 04:12:04

标签: iphone plist

我有以下plist结构。我真的很困惑如何将项目写入plist而不覆盖现有数据并将其读出来。

以下是我的plist是怎样的,请建议我使用适当的编码逻辑来存储机制而不覆盖它的内容以及如何在以后检索它。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PlacesID</key>
    <array/>
    <key>PlaceName</key>
    <array/>
</dict>
</plist>

我有两个动态填充的数组,我必须将该数组的内容存储到此plist中。如何实现这一目标?

有人请帮助我。

寻找积极的回应......先谢谢大家......

2 个答案:

答案 0 :(得分:1)

在这里:(将“数据”替换为plist的名称)

        NSError *error;
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
        NSString *documentsDirectory = [paths objectAtIndex:0]; //2
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"]; //3

        NSFileManager *fileManager = [NSFileManager defaultManager];

        if (![fileManager fileExistsAtPath: path]) //4
        {
            NSString *bundle = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; //5

            [fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
        }



        NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile: path];

        if ( [data containsObject:example]  ){
            value = [data count];
            NSString *count;

            count = [NSString stringWithFormat:@"%i", value];
        }
        else {

        [data addObject:example];

        [data writeToFile: path atomically:YES];
        value = [data count];
            NSString *count;

        count = [NSString stringWithFormat:@"%i", value];
        [data release];
    }

答案 1 :(得分:0)

如果您正在寻找从应用程序读取/写入plist文件的指南,肯定会有一些现有的问题/资源可以帮助您从头到尾。

查看本指南&gt; http://www.icodeblog.com/2009/02/14/loading-data-from-plist-files/

也可以查看这些问题;