【问题标题】:How to add and read items to the plist in iPhone?如何在 iPhone 的 plist 中添加和读取项目?
【发布时间】:2011-09-12 12:18:05
【问题描述】:

我有以下 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 中。我怎样才能做到这一点?

请大家帮帮我。

正在寻找积极的回应......提前谢谢大家......

【问题讨论】:

    标签: iphone plist


    【解决方案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];
        }
    

    【讨论】:

    • 嗨 Prajoth,感谢您的回复。您能否解释一下您在此语句后的 if...else 部分中做了什么 NSMutableArray *data = [[NSMutableArray alloc] initWithContentsOfFile: path];我需要将两个数组存储到 plist 中,我不清楚您的代码。请原谅...
    • 嘿 Sankar,我在我的特定应用程序中使用了它,我正在检查我添加到 plist 中的数据是否已经存在于 plist 中,在这种情况下我不想将它添加到 plist .这就是我使用 if then 语句的原因。
    【解决方案2】:

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

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

    也看看这些问题;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多