Хранение данных. Файлы

Последнее обновление: 13.01.2021

При работе с данными мы нередко сталкиваемся с проблемой их сохранения. В Xamarin Forms есть различные способы сохранения данных в зависимости от выбранного типа хранилища. Можно выделить четыре типа хранилища данных:

  • Коллекция Properites в классе Application, которая предназначена для хранения каких-то временных данных

  • Настройки (Preferences) операционной системы для хранения каких-то атомарных данных типа int или string

  • Файлы в файловой системе

  • Базы данных

Свойство Properites

Свойство Properties класса Application представляет словарь, где каждому ключу с типом string сопоставляется некоторое значение. Содержимое этого словаря автоматически сохраняется перед тем, как приложение завершается, поэтому при новом запуске приложения мы сможем использовать ранее сохраненные в словаре данные.

При этом мы не ограничены только классом Application, в котором собственно определено данное свойство. Мы также можем к нему обращаться в коде страниц с помощью выражения App.Current.Properties.

Принципы работы с Properties те же, что и со стандартными словарями.

Добавление данных в словарь:

App.Current.Properties.Add("name", "Tom");
// или так
App.Current.Properties["name"] = "Tom";

Получение значения:

string name = App.Current.Properties["name"];

Получение с проверкой на наличие:

object name = "";
if(App.Current.Properties.TryGetValue("name", out name))
{
    // выполняем действия, если в словаре есть ключ "name"
}

Удаление:

App.Current.Properties.Remove("name");

Например, определим в проекте страницу MainPage. В коде xaml пропишем текстовое поле и кнопку:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HelloApp.MainPage">
  <StackLayout>
    <Entry x:Name="nameBox" />
    <Button Text="Сохранить" Clicked="OnClick" />
  </StackLayout>
</ContentPage>

А в коде C# у страницы определим добавление и извлечение из словаря Properties введенного в текстовое поле текста:

using System;
using Xamarin.Forms;

namespace HelloApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        protected override void OnAppearing()
        {
            object name = "";
            if (App.Current.Properties.TryGetValue("name", out name))
            {
                nameBox.Text = (string)name;
            }
            base.OnAppearing();
        }

        private void OnClick(object sender, EventArgs e)
        {
            string value = nameBox.Text;
            
            App.Current.Properties["name"] = value;
        }
    }
}
App.Current.Properties в Xamarin Forms
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850