Как предотвратить замену значения для ключа в настройках?

#include <Preferences.h>

Preferences preferences;

const char* roomname_long = "String 1";
const char* roomname_short = "String2";
const char* roomname_long_test = "String 3";
String roomname;

void setup() {
  Serial.begin(115200);
  preferences.begin("app",false);

  preferences.begin("credentials", false);
  preferences.putString("roomname_long", roomname_long); 
  preferences.putString("roomname_short", roomname_short);
  preferences.putString("roomname_long", roomname_long_test);
  
  roomname = preferences.getString("roomname_long", "");

  Serial.println(roomname_long);
  Serial.println(roomname_short);
  Serial.println(roomname);

  preferences.end();
}

void loop() {

}

Я пытаюсь сохранить некоторые данные на своем esp32, это работает на самом деле, но если я попытаюсь сохранить другую переменную с тем же ключом, который она записывает поверх строки раньше, как я могу прервать это?

на последовательном мониторе я получил следующее:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1324
ho 0 tail 12 room 4
load:0x40078000,len:13508
load:0x40080400,len:3604
entry 0x400805f0
String 1
String 2
String 3

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

Так что это должно быть пребывание на строке 1

, 👍1


1 ответ


Лучший ответ:

0

Вы можете использовать IsKey, чтобы проверить, установлен ли уже ключ настроек.

preferences.putString("roomname_long", roomname_long);
preferences.putString("roomname_short", roomname_short);
if (!preferences.isKey("roomname_long")) {
  preferences.putString("roomname_long", roomname_long_test);
}
,