xamarin.forms - Xamarin.Forms 将用户保存在共享函数中
问题描述
我使用在 IOS 中创建的 SharedFunctions 接口在手机中保存了一个令牌:
public void SaveAccessToken(string token)
{
NSUserDefaults.StandardUserDefaults.SetString(token, "AccessToken");
}
在安卓中:
public void SaveAccessToken(string token)
{
var mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
var mPrefsEditor = mSharedPrefs.Edit();
mPrefsEditor.PutString("AccessToken", token);
mPrefsEditor.Commit();
mPrefsEditor.Dispose();
mSharedPrefs.Dispose();
}
我还想保存一个对象而不是字符串。
解决方案
看一下NSUserDefaults 的文档,似乎写一个对象有点受限制,因此我建议你换一种方式:使用 Newtonsoft.JSON (或另一个 JSON 库)序列化对象并编写序列化对象。
对于 iOS:
public void SaveAccessToken<T>(string key, T value)
{
var serializedObject = JsonConvert.SerializeObject(value);
NSUserDefaults.StandardUserDefaults.SetString(serializedObject, key);
}
对于 Android 也是如此
public void SaveAccessToken<T>(string key, T value)
{
var serializedObject = JsonConvert.SerializeObject(value);
var mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
var mPrefsEditor = mSharedPrefs.Edit();
mPrefsEditor.PutString(serializedObject, key);
mPrefsEditor.Commit();
mPrefsEditor.Dispose();
mSharedPrefs.Dispose();
}
推荐阅读
- c# - 如何获取要在使用分页的表中设置的隐藏字段值?
- node.js - 如何在使用 MERN 上传时裁剪图像并将副本保存在数据库中
- dictionary - 大数的字典和阶乘
- python - 需要帮助从 .txt 文件中获取信息,但前提是输入的单词已经存在,使用 Python
- etl - Pentaho Kettle 变量更新
- swift - 如何使用 Swift 类解析 JSON 数据?
- flutter - Flutter 性能 - SetState 与 StreamBuilder
- python - 如何右键保存图片或文件?
- javascript - 如何在jquery中的选定行顶部附加新表行
- sql - 优化 SQL 查询或归档大表