【发布时间】:2011-10-14 03:22:01
【问题描述】:
我尝试了以下操作:
NSMutableArray *myArr = [NSMutableArray arrayWithArray:[myDict objectForKey:@"myKey"]];
[myArr addObject:@"New string xxx"];
[myDict setObject:myArr forKey:@"myKey"];
// Write to file (done successfully)
如您所见,我得到了一个数组,它存储在 plist 中,键为 @"myKey",向其中添加一些对象并希望在 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>
【问题讨论】:
-
两件事:1. 一个 NSLog(@"myDict: %@", myDict);将显示字典而无需编写它。 2. 仔细考虑每一个语句正在做什么。将复合语句分解为多个语句,每个语句执行一件事。一个例子是第一条语句,它做了两件事,访问字典的内容和初始化一个数组。这将使人们更容易理解正在发生的事情,或者明确声明没有被理解。
-
发布的代码似乎没有问题。
myDict在您发布的代码执行之前处于预期状态,之后处于意外状态?
标签: objective-c plist