Сохранить список объектов в Xamarin Essentials

#xamarin.forms

#xamarin.forms

Вопрос:

мой первый вопрос здесь

однако, поскольку мне сообщили, что вопросы не должны изменять исходный вопрос, я создал новый.

Я сохраняю пользовательские настройки и хотел бы сохранить их в списке, я просмотрел настройки Джеймса, однако обнаружил, что сохранить их в списке невозможно. Итак, я решил использовать Xamarin Essentials.

Сначала я попытался сохранить только строковое значение, которое после некоторой борьбы мне удалось выработать, и теперь я пытаюсь сохранить объект

      static void AddToList(SettingField text)
        {
    
          var savedList = new List<SettingField>(Preference.SavedList);
          savedList.Add(text);
    
          Preference.SavedList = savedList;
        }
    
    
        private void ExecuteMultiPageCommand(bool value)
        {
        
          var recognitionProviderSettings = new RecognitionProviderSettings
            {SettingFields = new List<SettingField>()};
    
          var set = new SettingField()
          {
            ProviderSettingId = "test",
            Value = "test"
            
          };
         
           AddToList(set);
           NotifyPropertyChanged("IsMultiPage");
        }
    
    and then the sterilization and des
    
   public static class Preference
  {
    private static SettingField _settingField;
    public static List<SettingField> SavedList
    {
      get
      {
        //var savedList = Deserialize<List<string>>(Preferences.Get(nameof(SavedList), "tesr"));
        var savedList  = Newtonsoft.Json.JsonConvert.DeserializeObject<SettingField>(Preferences.Get(nameof(SavedList), _settingField)) ;

        SavedList.Add(savedList);
        return SavedList ?? new List<SettingField>();
      }
      set
      {
        var serializedList = Serialize(value);
        Preferences.Set(nameof(SavedList), serializedList);
      }
    }

    static T Deserialize<T>(string serializedObject) => JsonConvert.DeserializeObject<T>(serializedObject);

    static string Serialize<T>(T objectToSerialize) => JsonConvert.SerializeObject(objectToSerialize);

  }
}
 

Но настройки.Get не принимает объект, есть ли другой способ, как я могу сохранить свои настройки в списке объектов? Пожалуйста, сообщите

Комментарии:

1. сериализуйте / десериализуйте свой объект в строку, если вы хотите сохранить его в настройках. Но Preferences действительно предназначен для хранения простых типов данных, а не сложных объектов.

2. хорошо, итак, вы рекомендуете плагин настроек?

3. Я ничего не могу рекомендовать, потому что я действительно не знаю, что вы пытаетесь сделать. Что такое SettingField и зачем вам нужен список вместо простого хранения отдельных значений настроек? Почему бы не сохранить их в SQLite вместо настроек?

4. есть ли у sqlite какое-либо понижение производительности?

5. Мне нужен список, потому что я отправляю данные поставщику. Поле настройки содержит идентификатор строки и строковое значение. Каждый раз при вызове службы поставщика мне нужно отправлять ему настройки. и если я сохраню его так же, как public bool IsMultiPage { get => AppSettings . GetValueOrDefault(«IsMultiPage», false); set => AppSettings. AddOrUpdateValue(«IsMultiPage», значение); }

Ответ №1:

Я бы порекомендовал вам использовать SecureStorage. Вы можете сохранять свои строки только в нем. Итак, место, где вы сериализовали свой объект как json. Просто преобразуйте ваш json в строку с помощью .toString() и сохраните его в защищенном хранилище.

Вы можете продолжать сохранять свой сериализованный объект json в виде строки в общих настройках, но вместо этого рекомендуется использовать SecureStorage .