NSUserDefaults 无法在 Xamarin 中保存 NSDictionary 数据
NSUserDefaults can not save NSDictionary Data in Xamarin
在 B Viewcontroller 中,我将数据存储到 NSUserDefaults 中并在 AViewController 中检索它们。
在执行过程中,它按预期执行。但是,一旦我关闭并重新 运行 应用程序,我发现这些信息(字典)没有被存储。
这是我在 NSUserDefaults
中存储数据的 BViewController
partial class BViewController : UIViewController
{
const string server = "server";
const string port = "port";
const string password = "password";
const string username = "username";
const string inboxuserid = "inboxuserid";
.............
.............
public override void ViewWillDisappear (bool animated)
{
var appDefaults = new NSDictionary (server, serverTF.Text, port, portTF.Text, password, passwordTF.Text,username,usernameTF.Text, inboxuserid,inboxuserTF.Text);
NSUserDefaults.StandardUserDefaults.RegisterDefaults (appDefaults);
NSUserDefaults.StandardUserDefaults.Synchronize ();
}
}
并在 A ViewController 中检索它们,如下所示:
partial class AViewController : UIViewController
{
public override void ViewWillAppear(bool animated)
{
var username = NSUserDefaults.StandardUserDefaults.StringForKey ("username");
Console.WriteLine (username);
}
}
基于以下文章:https://moovendan.wordpress.com/2012/12/26/monotouch-nsuserdefaults-store-values-in-settings/
我建议使用以下代码,我已经用一个小示例进行了测试并且有效。
BViewController,将字典存入NSUserDefaults:
NSDictionary appDefaults= new NSDictionary(server, serverTF.Text, port, portTF.Text, password, passwordTF.Text, username, usernameTF.Text, inboxuserid, inboxuserTF.Text);
NSString key = new NSString ("dict");
NSUserDefaults.StandardUserDefaults.SetValueForKey (appDefaults, key);
AViewController,从 NSUserDefaults 中检索字典:
NSString key = new NSString ("dict");
NSDictionary d2 = NSUserDefaults.StandardUserDefaults.DictionaryForKey (key);
Console.WriteLine (d2["username"]);
在 B Viewcontroller 中,我将数据存储到 NSUserDefaults 中并在 AViewController 中检索它们。
在执行过程中,它按预期执行。但是,一旦我关闭并重新 运行 应用程序,我发现这些信息(字典)没有被存储。
这是我在 NSUserDefaults
中存储数据的 BViewControllerpartial class BViewController : UIViewController
{
const string server = "server";
const string port = "port";
const string password = "password";
const string username = "username";
const string inboxuserid = "inboxuserid";
.............
.............
public override void ViewWillDisappear (bool animated)
{
var appDefaults = new NSDictionary (server, serverTF.Text, port, portTF.Text, password, passwordTF.Text,username,usernameTF.Text, inboxuserid,inboxuserTF.Text);
NSUserDefaults.StandardUserDefaults.RegisterDefaults (appDefaults);
NSUserDefaults.StandardUserDefaults.Synchronize ();
}
}
并在 A ViewController 中检索它们,如下所示:
partial class AViewController : UIViewController
{
public override void ViewWillAppear(bool animated)
{
var username = NSUserDefaults.StandardUserDefaults.StringForKey ("username");
Console.WriteLine (username);
}
}
基于以下文章:https://moovendan.wordpress.com/2012/12/26/monotouch-nsuserdefaults-store-values-in-settings/
我建议使用以下代码,我已经用一个小示例进行了测试并且有效。
BViewController,将字典存入NSUserDefaults:
NSDictionary appDefaults= new NSDictionary(server, serverTF.Text, port, portTF.Text, password, passwordTF.Text, username, usernameTF.Text, inboxuserid, inboxuserTF.Text);
NSString key = new NSString ("dict");
NSUserDefaults.StandardUserDefaults.SetValueForKey (appDefaults, key);
AViewController,从 NSUserDefaults 中检索字典:
NSString key = new NSString ("dict");
NSDictionary d2 = NSUserDefaults.StandardUserDefaults.DictionaryForKey (key);
Console.WriteLine (d2["username"]);