用引号填充 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 的外观。<?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>Quotes</key> <array> <string>
【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章