我有问题。我有这个文件字典.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];
但是这段代码不起作用,我收到错误,我该怎么做?
由于
答案 0 :(得分:0)
由于您没有提供错误,我认为问题可能是
NSMutableDictionary * contentArray = [NSMutableDictionary dictionaryWithContentsOfFile: plistPath];
只创建一个可变容器(您可以更改contentArray的内容,但不能更改其内部的对象(叶子)。
如果您想要可变叶子,请改用NSPropertyListSerialization:
NSMutableDictionary * contentArray = [NSPropertyListSerialization propertyListFromData: [NSData dataWithContentsOfFile: plistPath] mutabilityOption: NSPropertyListMutableContainersAndLeaves format: nil errorDescription: nil];