単純なMonoTouchiPadアプリケーションで次のコードを使用します。
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")などの呼び出しは、"myName"ではなくnullを返します。
Synchronize()を呼び出した後、デフォルト値が保持されないのはなぜですか?各SetString()の後にSynchronize()呼び出しを追加しても、問題は解決しませんでした。