Сохранение и загрузка параметров приложения реализуются с использованием формата JSON, позволяя сохранять пользовательские данные (например, возраст, рост, вес) между сессиями.
Подготовка
Создайте файл settings.json в той же папке, что и main.lua. Запишите в него следующую структуру данных в формате JSON:
{
"activity_name": "",
"activity_factor": 0,
"times": 0,
"weight": 0,
"height": 0,
"sex": "",
"age": 0,
"activity_index": 0
}
Ключи представляют параметры приложения (название действия, фактор активности, время, вес, рост, пол, возраст, индекс активности), а значения — соответствующие данные. Значения можно изменить. Пробелы в файле допустимы.
Загрузка параметров
Подключите библиотеку JSON:
require "json"
Функция load_settings загружает данные из settings.json:
function load_settings(file_name)
local path = system.pathForFile(file_name, system.ResourceDirectory)
local content = ""
local my_table = {}
local file = io.open(path, "r")
if file then
content = file:read("*all")
file:close()
my_table = json.decode(content)
end
return my_table
end
Функция принимает имя файла, получает путь, открывает файл для чтения, считывает данные, декодирует JSON и возвращает таблицу. При отсутствии файла возвращается пустая таблица.
Применение параметров
В main.lua вызовите load_settings и примените загруженные данные:
local settings = load_settings("settings.json")
if settings then
weight = settings.weight
height = settings.height
-- ... и так далее для остальных параметров
end
Проверьте существование файла перед использованием данных, чтобы предотвратить ошибки. Код устанавливает значения переменных weight, height и других, используя данные из settings.json.
Сохранение параметров
Функция save_settings сохраняет данные в settings.json:
function save_settings(data, file_name)
local path = system.pathForFile(file_name, system.DocumentsDirectory)
local content = ""
local file = io.open(path, "w")
if file then
content = json.encode(data)
file:write(content)
file:close()
return true
else
return false
end
end
Функция принимает таблицу данных и имя файла, формирует JSON-строку, открывает файл для записи, записывает данные и закрывает файл. Возвращает true при успехе и false в противном случае.
Сохранение данных
Вызов save_settings осуществляется после получения данных от пользователя (например, после нажатия кнопки «Сохранить»):
local settings = {}
settings.weight = weight -- и так далее для других параметров
save_settings(settings, "settings.json")
Создается таблица settings с новыми данными, и вызывается save_settings для сохранения в settings.json. Путь к файлу — system.DocumentsDirectory.
Обработка ошибок
Возможны ошибки, связанные с путем к файлу или файловой системой. Тщательно проверяйте код и обрабатывайте ошибки. Замечание о баге эмулятора (закрытие окна при сохранении) относится к специфике эмулятора и не должно воспроизводиться на устройстве.
Реализация описанных шагов обеспечивает сохранение и загрузку параметров приложения, повышая удобство использования и сохраняя настройки между сессиями.