我试图在Xamarin表单应用程序中使用James Montemagno的设置插件,但是每次我重新启动应用程序时,设置都恢复为默认值,而不显示我在上次运行该应用程序时对其所做的更改。
AddOrUpdateValue和其他方法具有文件名参数,这似乎是可选的。还是需要?我尝试使用文件名进行尝试,但它似乎仍然无法保存设置。
是否需要做一些“保存”设置?我一定想念一些东西...
答案 0 :(得分:2)
Xam.Plugins.Settings
没有“保存”。
以下是使用静态类的示例:
using Plugin.Settings;
using Plugin.Settings.Abstractions;
public static class Settings
{
static ISettings AppSettings => CrossSettings.Current;
public static string MySetting
{
get => AppSettings.GetValueOrDefault("MySettingKey", LastUsedDefault);
set => AppSettings.AddOrUpdateValue("MySettingKey", value);
}
}
当您需要更新或检索设置时,只需像使用任何属性一样使用它即可:
var Foo = Settings.MySetting;
或
Settings.MySetting = Bar;
答案 1 :(得分:1)
感谢您的回复。就我而言,这是一个愚蠢的错误。我已经盯着代码好几天了,直到今天为止,我都没有看到我不是在传递密钥,而是将自身设置为AddOrUpdateValue的第一个参数:
#standardSQL
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS STRING
LANGUAGE js AS """
try { var parsed = JSON.parse(json);
return JSON.stringify(jsonPath(parsed, json_path));
} catch (e) { return null }
"""
OPTIONS (
library="gs://your_bucket/jsonpath-0.8.0.js"
);
WITH `project.dataset.your_table` AS (
SELECT '''
[{
"key": "name",
"value": "john doe"
}, {
"key": "age",
"value": "8"
}, {
"key": "gender",
"value": "male"
}]
''' str
)
SELECT CUSTOM_JSON_EXTRACT(str, '$[?(@.key=="age")].value')
FROM `project.dataset.your_table`
代替此:
set => AppSettings.AddOrUpdateValue(MySetting, value);