我尝试了以下操作:
NSMutableArray *myArr = [NSMutableArray arrayWithArray:[myDict objectForKey:@"myKey"]];
[myArr addObject:@"New string xxx"];
[myDict setObject:myArr forKey:@"myKey"];
// Write to file (done successfully)如你所见,我得到了一个数组,它用键@"myKey"存储在plist上,添加了一些对象,并希望在plist上重新记录它,当然还有一些额外的值。
问题是,在我的plist上会发生以下情况:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>myKey</key>
<array>
<string>First entry on the plist</string>
<array>
<string>First entry on the plist</string>
<string>New string xxx</string>
</array>
</array>
</dict>
</plist>当然,期望的输出是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>myKey</key>
<array>
<string>First entry on the plist</string>
<string>New string xxx</string>
</array>
</dict>
</plist>发布于 2011-10-14 11:38:17
在重新设置之前,您是否尝试过调用[myDict removeObjectForKey:@"myKey"]?
发布于 2011-10-14 14:03:49
它工作正常
NSMutableArray *myArr = [NSMutableArray arrayWithArray:[myDict objectForKey:@"myKey"]];
[myArr addObject:@"New string xxx"];
[myDict setObject:myArr forKey:@"myKey"];
[myDict writeToFile:@"/path/p.text" atomically:NO];
[myArr addObject:@"new object"];
[myDict setObject:myArr forKey:@"myKey"];
[myDict writeToFile:@"/path/p.text" atomically:NO];输出:
<?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>myKey</key>
<array>
<string>New string xxx</string>
<string>new object</string>
</array>
</dict>
</plist>https://stackoverflow.com/questions/7762712
复制相似问题