用引号填充 plist

Posted

技术标签:

【中文标题】用引号填充 plist【英文标题】:Fill a plist with quotes 【发布时间】:2012-08-02 15:34:09 【问题描述】:

我在 iPhone 每日报价应用上做了一段时间的工作,我收到的大部分 cmets 是使用 plist 存储报价,然后设置代码以每天随机访问报价。不过,我从来没有真正使用过 plist,并且不确定构建一个充满引号的新 plist 的最佳方法。我能得到一些指导吗?

【问题讨论】:

我正在开发一个类似的应用程序,我希望它能够做到这一点。你能告诉我你是怎么做到的吗? 【参考方案1】:

您的 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>
    <string>A Quote</string>
    <string>A Quote</string>
    <string>A Quote</string>
</array>
</plist>

您可以像这样将 plist 打开到数组中。然后你会有一个字符串数组,你可以做任何你想做的事情。一旦你有了一个数组,我假设你知道如何从中获取一个随机对象。

[NSArray arrayWithContentsOfFile:@"myPlist.plist"];

【讨论】:

谢谢,还需要另外一件事...以前从未构建过 plist,所以在 Xcode 中我会新建文件,选择 plist,但不确定应该是哪种类型。我是否只是将其保留为默认值,然后添加一行作为数组,并在该行下放入所有引号? 如果您在 Xcode 中执行此操作,那么每一行都是一个引号。整个 plist 是一个数组。因此,如果您要将一行作为一个数组,那么在其下有子行,从技术上讲,您将在数组中有一个数组。如果这有意义的话。 好的,所以我需要做的就是创建 plist,然后为每个引号添加一行字符串?有道理 是的,应该这样做。您可以使用嵌套数组、字典等变得更加复杂,但这绝对可以帮助您入门。值得庆幸的是 NSArray 有一个内置的解析器,所以你只需要一行代码来自动读取 plist。 我遇到的一个问题是它正在为数组返回 null。这是 plist 的外观。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist version="1.0"&gt; &lt;dict&gt; &lt;key&gt;Quotes&lt;/key&gt; &lt;array&gt; &lt;string&gt;【参考方案2】:
<?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>files</key>
    <dict>
        <key>Resources/Info.plist</key>
        <data>
        OkWU6AfEeAr3G1LVjwgv3QVl/C4=
        </data>
    </dict>
    <key>files2</key>
    <dict>
        <key>Resources/Info.plist</key>
        <dict>
            <key>hash</key>
            <data>
            OkWU6AfEeAr3G1LVjwgv3QVl/C4=
            </data>
            <key>hash2</key>
            <data>
            bTnXxa3Ed3AQ3vCPs76DvwtUwOlgsWxMGNleo3ICfKA=
            </data>
        </dict>
    </dict>
    <key>rules</key>
    <dict>
        <key>^Resources/</key>
        <true/>
        <key>^Resources/.*\.lproj/</key>
        <dict>
            <key>optional</key>
            <true/>
            <key>weight</key>
            <real>1000</real>
        </dict>
        <key>^Resources/.*\.lproj/locversion.plist$</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>1100</real>
        </dict>
        <key>^Resources/Base\.lproj/</key>
        <dict>
            <key>weight</key>
            <real>1010</real>
        </dict>
        <key>^version.plist$</key>
        <true/>
    </dict>
    <key>rules2</key>
    <dict>
        <key>.*\.dSYM($|/)</key>
        <dict>
            <key>weight</key>
            <real>11</real>
        </dict>
        <key>^(.*/)?\.DS_Store$</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>2000</real>
        </dict>
        <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
        <dict>
            <key>nested</key>
            <true/>
            <key>weight</key>
            <real>10</real>
        </dict>
        <key>^.*</key>
        <true/>
        <key>^Info\.plist$</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>20</real>
        </dict>
        <key>^PkgInfo$</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>20</real>
        </dict>
        <key>^Resources/</key>
        <dict>
            <key>weight</key>
            <real>20</real>
        </dict>
        <key>^Resources/.*\.lproj/</key>
        <dict>
            <key>optional</key>
            <true/>
            <key>weight</key>
            <real>1000</real>
        </dict>
        <key>^Resources/.*\.lproj/locversion.plist$</key>
        <dict>
            <key>omit</key>
            <true/>
            <key>weight</key>
            <real>1100</real>
        </dict>
        <key>^Resources/Base\.lproj/</key>
        <dict>
            <key>weight</key>
            <real>1010</real>
        </dict>
        <key>^[^/]+$</key>
        <dict>
            <key>nested</key>
            <true/>
            <key>weight</key>
            <real>10</real>
        </dict>
        <key>^embedded\.provisionprofile$</key>
        <dict>
            <key>weight</key>
            <real>20</real>
        </dict>
        <key>^version\.plist$</key>
        <dict>
            <key>weight</key>
            <real>20</real>
        </dict>
    </dict>
</dict>
</plist>

【讨论】:

虽然此代码 sn-p 可能是解决方案,但包含解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。

以上是关于用引号填充 plist的主要内容,如果未能解决你的问题,请参考以下文章

编辑 .plist 文件 - 是不是允许将单引号用作字符串?

预填充的 html 字段中的引号

在 Xcode 中编辑 plist

PHP输出单引号和双引号作为输入元素的值

我怎样才能逃脱单引号?

带有双引号的 JAVASCRIPT var 到 PHP 并返回用于自动填充