James Montemagno编写的Xam.Plugins.Settings似乎没有保存我的设置

时间:2018-08-02 19:25:23

标签: c# xamarin.forms

我试图在Xamarin表单应用程序中使用James Montemagno的设置插件,但是每次我重新启动应用程序时,设置都恢复为默认值,而不显示我在上次运行该应用程序时对其所做的更改。

AddOrUpdateValue和其他方法具有文件名参数,这似乎是可选的。还是需要?我尝试使用文件名进行尝试,但它似乎仍然无法保存设置。

是否需要做一些“保存”设置?我一定想念一些东西...

2 个答案:

答案 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);