【问题标题】:obj-c append plist [closed]obj-c 附加 plist [关闭]
【发布时间】:2012-10-09 05:34:30
【问题描述】:

所以我对所有这些 iOS 东西都是新手,我对将项目附加到 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">
<array>
  <dict>
    <key>team</key>
    <string>red</string>
    <key>name</key>
    <string>Guy1</string>
  </dict>
  <dict>
    <key>team</key>
    <string>blue</string>
    <key>name</key>
    <string>Guy2</string>
  </dict>
</array>
</plist>

我已经设置了一个适当的 tableview 来读取这些信息,所以我真的不打算更改 plist。

我目前设置的与here 显示的第一个答案相同。我可以编译我的代码,但没有任何修改(当我尝试追加时)。我需要进行哪些更改才能使其专门附加到上述 plist 中。

【问题讨论】:

  • 您链接的答案中的代码已经允许您添加到 plist 并写回文件。请更具体地说明您需要了解的内容。
  • 在测试任意 plist 上使用时,该方法对我有效,但在我构建的 plist 上无效。 plist 根本没有修改,我知道我需要改变一些东西才能让它工作,我只是不确定要改变什么。谢谢
  • 您的 plist 在顶层有一个数组,而不是字典。使用NSMutableArray 而不是NSMutableDictionary

标签: objective-c


【解决方案1】:

虽然可以操作存储在属性列表中的 XML,但在 Objective-C 中加载属性列表、操作存储在其中的对象、然后将对象保存回属性列表几乎总是更容易。这样做可以避免创建无效文件的任何可能性,并且代码也更简单。

NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:pathToMyPropertyList];
NSDictionary *newTeam = [NSDictionary dictionaryWithObjectsAndKeys:@"green", @"team", @"Guy4", @"name", nil];
[array addObject:newTeam]
[array writeToFile:somePath atomically:YES];

【讨论】:

  • 我喜欢这样简单的东西,让学习更轻松。只有一个问题,我明白了; 'NSMutableArray' 可能不会响应 '-appendObject:'
  • 抱歉 -- 应该是 -addObject:。当所有其他方法都失败时,请阅读说明。
  • 啊,谢谢。这很有帮助。
猜你喜欢
  • 2016-08-17
  • 1970-01-01
  • 2012-02-26
  • 2011-09-08
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 2020-01-08
相关资源
最近更新 更多