Проблема булевых предпочтений в Corona Simulator - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над мобильным приложением, использующим Corona SDK, и пытаюсь сохранить настройки, используя функции system.setPreferences() / system.getPreference(). На моем телефоне android он работает нормально, но в Corona Simulator он работает следующим образом:

  1. В первый раз я запускаю следующий код:
    system.setPreferences("app", {
        test = true
    })
    print(system.getPreference("app", "test", "boolean"))

Он печатает true, как и ожидалось

Во второй раз я пытаюсь получить предпочтение, не сохраняя его (оно должно быть уже сохранено на предыдущем шаге)
print(system.getPreference("app", "test", "boolean"))

Вывод следующий:

ERROR: C:\Users\kezzyhko\Desktop\MobileGame\main.lua:7: system.getPreference() - Preference's string value cannot be converted to boolean. nil

Пытаясь получить его как строку
print(system.getPreference("app", "test", "string"))

Я получаю 1

Я тоже пытался заглянуть в файл C:\Users\kezzyhko\AppData\Local\Corona Labs\Corona Simulator\Sandbox\mobilegame-370DE4D889B5BBC98141FE51641482AD\.system\CoronaPreferences.sqlite, где хранятся настройки, и действительно логические значения сохраняются как 0 / 1. Если в этой базе данных я вручную отредактирую их на true, код начнет работать должным образом:

print(system.getPreference("app", "test", "boolean"))

output true

Это известная проблема (я не смог найти ни одной информация об этом)? Есть ли способ исправить это без грязных обходных путей?

1 Ответ

0 голосов
/ 21 апреля 2020

Звучит как техничность. Конечно, они «логические» в том смысле, что они равны 1 и 0, но поскольку они хранятся в файле, они, вероятно, хранятся в виде текста, то есть в виде строк.

Так что при загрузке данных вам, вероятно, понадобится чтобы всегда принимать их как строки, а затем вручную сказать, что 0 - это ложь, а 1 - это правда.

Я бы порекомендовал сохранить ваши данные, используя JSON / SQL. Вот простой урок для JSON: https://docs.coronalabs.com/tutorial/data/jsonSaveLoad/index.html

...