我一直在尝试为我的应用设置设置,但即使我一遍又一遍地查看它并将其与书中的示例进行比较,我似乎无法使其正常工作{{3 }}
我知道语法必须完美,而且此文件非常简单,目前我只是想显示一个文本字段。我确实对一个全新的项目进行了简要的工作,但是我从未设法让它工作起来。
这是我的Root.plist文件的XML:
<?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>Root</key>
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string>Group Name</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
<key>Key</key>
<string>usernameTextField</string>
<key>Title</key>
<string>Username</string>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
</dict>
</array>
</dict>
</dict>
</plist>
正如我所说,我已经看了很多次,我看不出任何问题。文件构建操作设置为“内容”,“复制到输出目录”设置为“始终复制”。我正在使用的MonoTouch版本是6.0.7。
我很感激这个问题的任何帮助。感谢
答案 0 :(得分:5)
确保Settings.bundle目录包含在项目的顶层。顶级,我的意思是在文件系统上,Settings.bundle目录应该与ProjectName.csproj文件位于同一目录中。在MonoDevelop中,它将显示为项目节点下的顶级文件夹之一。
将Root.plist构建操作设置为BundleResource(不要启用“复制到输出目录”。提示:如果您发现自己设置了“复制到输出目录”,请不要这样做 - 它几乎总是错误的事情 - 我们实际上已经讨论过完全删除这个选项。)
现在,对于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>
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>Group Name</string>
</dict>
<dict>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
<key>Title</key>
<string>Username</string>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
<key>KeyboardType</key>
<string>Alphabet</string>
<key>IsSecure</key>
<false/>
<key>Key</key>
<string>usernameTextField</string>
<key>DefaultValue</key>
<string></string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
查看Root.plist文件,看起来PreferenceSpecifiers键不在顶级dict节点中(需要它)。换句话说:
删除文件顶部的以下行:
<dict>
<key>Root</key>
...以及文件末尾的以下行之一:
</dict>
应该这样做......
现在......所有这一切,我最近在尝试将设置添加到我的个人项目时自己想出了这一点,并决定我们在Xamarin需要让这更容易。我已经在即将推出的MonoDevelop 3.1中解决了一些小问题,但我希望能够有时间将Settings.bundle的模板添加到MonoDevelop的“添加新文件”向导中。我还想添加plist键/值提示,就像我们为Info.plist和Entitlements.plist做的那样,这样MonoDevelop的plist编辑器可以在编辑这些plist文件时更好地指导你。
答案 1 :(得分:0)
对于初学者来说,你错过了关闭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>
<dict>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>Stay Signed-In</string>
<key>Key</key>
<string>staySignedIn</string>
<key>DefaultValue</key>
<true/>
</dict>
</array>
</dict>
</plist>
我希望这会有所帮助。