#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 .