我在一个简单的 MonoTouch iPad 应用程序中使用以下代码:
if (NSUserDefaults.StandardUserDefaults.StringForKey("spid") == null)
{
NSUserDefaults.StandardUserDefaults.SetString ("spid", "myName");
NSUserDefaults.StandardUserDefaults.SetString ("spdomain", "myDomain");
NSUserDefaults.StandardUserDefaults.SetString ("sppwd", "myPassword");
NSUserDefaults.StandardUserDefaults.Synchronize();
}
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential(NSUserDefaults.StandardUserDefaults.StringForKey("spid"),
NSUserDefaults.StandardUserDefaults.StringForKey("sppwd"),
NSUserDefaults.StandardUserDefaults.StringForKey("spdomain"));
目的(现在直到我构建了正确的视图)是提供将存储在 plist 文件中的默认凭据(稍后它将被移动到 KeyChain 中以提高安全性)。但是,对 StringForKey("spid") 等的调用返回 null 而不是 "myName"。
为什么调用 Synchronize() 后我的默认值没有保留?即使在每个 SetString() 之后添加 Synchronize() 调用也不能解决问题。