我遇到了一个非常奇怪的问题。我为 iPad 应用程序创建了一个应用程序设置,由于某种原因,该设置默认为 false - 但仅在用户打开设置并观察实际设置之前。在至少被观察一次后,设置将始终返回正确的值,无论是真还是假(如果设置是量子粒子,这对我来说更有意义)。此行为仅发生在设备上,而不发生在模拟器中。此外,当我在设备上以调试模式启动或通过 TestFlight 发布时,它是一致的。
我的设置是在 Root.plist 中定义的,它位于我的客户端解决方案的 Settings.bundle 文件夹中。此文件中定义的所有其他设置都可以正常工作。
由于我无法真正展示 Xamarin 设计器,因此这是来自 Root.plist 的我的 XML:
<dict>
<key>Title</key>
<string>Camera Settings</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
<key>Key</key>
<string>useCameraForScanning</string>
<key>Title</key>
<string>Use Camera for Scanning</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
这是我的访问器代码:
private const string useCameraForScanningKey = "useCameraForScanning";
private static bool useCameraForScanning = true;
public static bool UseCameraForScanning
{
get
{
bool useCamera = NSUserDefaults.StandardUserDefaults.BoolForKey(useCameraForScanningKey);
useCameraForScanning = useCamera;
return useCameraForScanning;
}
set { NSUserDefaults.StandardUserDefaults.SetBool(value, useCameraForScanningKey); }
}
整个访问器的断点证明设置被检索为假。我对这个 Root.plist 业务非常陌生,所以我猜我在这里遗漏了一些明显的东西。
提前感谢您提供的任何帮助!