从 *.plist 文件 iPhone 脚本中删除 <dict>...</dict>

Posted

技术标签:

【中文标题】从 *.plist 文件 iPhone 脚本中删除 <dict>...</dict>【英文标题】:Delete <dict>...</dict> from *.plist file iPhone script 【发布时间】:2012-07-07 11:40:46 【问题描述】:

我想编写一个脚本,从 *.plist 文件中删除一个指定的dict,但我在互联网上找到的任何东西都不起作用。有没有办法做到这一点?我试过sed comman 但这不起作用

【问题讨论】:

【参考方案1】:
    将 plist 文件读入NSDictionary。 [Docs] 为此创建mutableCopy 以获得可以使用的字典。 删除您要删除的项目 将字典写回磁盘。 [Docs]

【讨论】:

【参考方案2】:

Sed 是一个非常糟糕的工具。尝试 PlistBuddy,如果它存在于 ios 上(它确实存在于 MacOS 上......);它被称为 /usr/libexec/PlistBuddy,并允许您操作 plist 文件。

语法有点奇怪,但“条目”似乎是这样处理的:从 plist 文件的顶部开始;如果是数组,则指定要寻址的元素的索引,如果是字典,则指定要转到的键名。用冒号分隔这些规范。如果有空格,请在整个内容周围加上“”。

我的示例文件是这样的:

stieber@:~> cat foo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">

<plist version="1.0">
  <array>
    <dict>
      <key>Sample 1</key>
      <array>
        <string>Sample String 1</string>
        <dict>
          <key>Sample 2</key>
          <string>Sample String 2</string>
        </dict>
      </array>
    </dict>
  </array>

一个示例会话:

stieber@:~> /usr/libexec/PlistBuddy foo.plist
Command: print
Array 
    Dict 
        Sample 1 = Array 
            Sample String 1
            Dict 
                Sample 2 = Sample String 2
            
        
    


Command: print "0:Sample 1:1"
Dict 
    Sample 2 = Sample String 2


Command: delete "0:Sample 1:1"
Command: print
Array 
    Dict 
        Sample 1 = Array 
            Sample String 1
        
    

您也可以在命令行上或通过此处的文档提供命令。互动更容易玩:-)

【讨论】:

plist buddy 在 iOS 上不可用

以上是关于从 *.plist 文件 iPhone 脚本中删除 <dict>...</dict>的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Info.plist 文件从 mac os 项目转换为 iphone 项目?

从 iphone SDK 3.3 及更高版本中的 plist 文件创建数组:目标 c

从 .rtf 文件创建 iPhone plist

Plist文件在iphone中转换xml文件?

想要从 iPhone 的 plist 中的字典数组中获取数据? [复制]

从本地 bash 脚本文件夹中编辑 plist