在on.plist上写一个数组

时间:2011-09-26 07:32:47

标签: objective-c

我有问题。我有这个文件字典.plist:

<plist version="1.0">
<dict>
    <key>2</key>
    <array>
        <string>a</string>
        <string>b</string>
        <string>c</string>
    </array>
</dict>
</plist>

所以现在我以这种方式阅读这个文件:

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"dictionary" ofType:@"plist"];
    NSMutableDictionary *contentArray = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];

NSMutableArray *dic = [contentArray  objectForKey:@"2"];

    NSLog(@"Numero di elementi del dictionary corrispondente a 2: %i", [dic count]);

    for (int i = 0; i < [dic count]; ++i) {
        NSString *temp = [dic objectAtIndex:i];
        NSLog(@"Stringa = %@\n", temp);
    }

现在我要修改数组:

[dic replaceObjectAtIndex:0 withObject:@"ok"];

我想把它写在dictionary.plist上,我试试这个:

[contentArray writeToFile:plistPath atomically:YES];

[contentArray release];

但是这段代码不起作用,我收到错误,我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

由于您没有提供错误,我认为问题可能是

NSMutableDictionary * contentArray = [NSMutableDictionary dictionaryWithContentsOfFile: plistPath];

只创建一个可变容器(您可以更改contentArray的内容,但不能更改其内部的对象(叶子)。

如果您想要可变叶子,请改用NSPropertyListSerialization:

NSMutableDictionary * contentArray = [NSPropertyListSerialization propertyListFromData: [NSData dataWithContentsOfFile: plistPath] mutabilityOption: NSPropertyListMutableContainersAndLeaves format: nil errorDescription: nil];