Objective c 将root.plist编辑为源代码会导致plist损坏
我刚刚开始处理首选项文件,在编辑设置包中的root.plist时,我立即遇到了问题。每次我将一个属性添加到plist并将其编辑为属性列表时,我的XCode 4都会崩溃。所以我想我只需要编辑源代码。看起来容易多了 但是当我运行程序时,root.plist没有被读取。(它与演示程序中的设置包配合得很好。我使用的是InAppSettingsKit。)我在源代码编辑器中查看了root.plist,它看起来不错。我试着把它看作一个属性列表,结果发现一个错误,说plist已经损坏了 这是我名单上的内容。有人能告诉我有什么问题吗Objective c 将root.plist编辑为源代码会导致plist损坏,objective-c,plist,settings.bundle,setting,Objective C,Plist,Settings.bundle,Setting,我刚刚开始处理首选项文件,在编辑设置包中的root.plist时,我立即遇到了问题。每次我将一个属性添加到plist并将其编辑为属性列表时,我的XCode 4都会崩溃。所以我想我只需要编辑源代码。看起来容易多了 但是当我运行程序时,root.plist没有被读取。(它与演示程序中的设置包配合得很好。我使用的是InAppSettingsKit。)我在源代码编辑器中查看了root.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">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<!-- Databases -->
<dict>
<key>Title</key> <string>Databases</string>
<key>Type</key> <string>PSGroupSpecifier</string>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>db0</string>
<key>Key</key> <string>db0_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>db1</string>
<key>Key</key> <string>db1_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<!-- Sharing Actions -->
<dict>
<key>Type</key> <string>PSGroupSpecifier</string>
<key>Title</key> <string>Sharing Actions</string>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>Facebook</string>
<key>Key</key> <string>facebook_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>Twitter</string>
<key>Key</key> <string>twitter_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>Email</string>
<key>Key</key> <string>email_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>BlogSpot</string>
<key>Key</key> <string>blogspot_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<!-- Automatic Email Enable -->
<dict>
<key>Type</key> <string>PSGroupSpecifier</string>
<key>Title</key> <string>Automatic Emailing</string>
</dict>
<dict>
<key>Type</key> <string>PSToggleSwitchSpecifier</string>
<key>Title</key> <string>Always Send to Email</string>
<key>Key</key> <string>autoblogspot_preference</string>
<key>DefaultValue</key> <true/>
</dict>
<!-- Calendar -->
<dict>
<key>Type</key> <string>PSRadioGroupSpecifier</string>
<key>Title</key> <string>First Day of the Week</string>
<key>Key</key> <string>firstDayOfTheWeek_preference</string>
<key>Values</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
<integer>6</integer>
</array>
<key>Titles</key>
<array>
<string>Sunday</string>
<string>Monday</string>
<string>Tuesday</string>
<string>Wednesday</string>
<string>Thursday</string>
<string>Friday</string>
<string>Saturday</string>
</array>
</dict>
<dict>
<key>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
偏好说明符
标题数据库
类型PSGroupSpecifier
类型PSToggleSwitchSpecifier
标题db0
键db0_首选项
默认值
类型PSToggleSwitchSpecifier
标题db1
键db1_首选项
默认值
类型PSGroupSpecifier
所有权分享行动
类型PSToggleSwitchSpecifier
标题Facebook
关键facebook用户偏好
默认值
类型PSToggleSwitchSpecifier
标题推特
关键的推特用户偏好
默认值
类型PSToggleSwitchSpecifier
标题电子邮件
关键电子邮件地址设置
默认值
类型PSToggleSwitchSpecifier
标题博客点
关键点位置偏好
默认值
类型PSGroupSpecifier
标题自动电子邮件
类型PSToggleSwitchSpecifier
标题始终发送到电子邮件
钥匙自动定位点首选项
默认值
类型说明符
一周的第一天
星期一的关键第一天\u首选项
价值观
0
1.
2.
3.
4.
5.
6.
标题
星期日
星期一
星期二
星期三
星期四
星期五
星期六
StringsTable
根
在plist的最后,您有一个悬挂的键和dict标签
第90行和第91行
StringsTable
根
应该是这样的:
</dict>
<dict />
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
StringsTable
根
或
钥匙串
StringsTable
根
我是用TextMate发现的。捆绑包->属性列表->验证语法。不会告诉你确切的问题,但会让你了解这个地区
您还可以通过尝试在属性列表编辑器应用程序(/Developer/Applications/Utilities/Property List Editor.app)中打开plist来查看一行
Plists是XML,因此任何XML验证器都会在语法中发现主要问题。不过,经验法则是,对于每个需要关闭标记的标记。对于每个键,您都需要一个值。
空标签应该是
而不是
谢谢。我刚刚意识到我可以在线验证XML。它显示了同样的事情。所以这不是什么神秘的XCode。
</dict>
<dict />
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
</dict>
<dict>
<key>key</key><string>string</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>