데이타 저장소

어떤 어플리케이션 시나리오에서는 특정 정보(계정 번호, 비밀번호, 설정 정보 등)를 영원히 저장할 필요가 있습니다. 이러한 데이타들의 특징은 데이타 양이 작지만 접근이 용이해야 합니다. 이 경우 데이타베이스를 이용할 필요 없이 FlywizOS에서는 간단하게 key-value 조합형식으로 데이터를 저장할 수 있는 기능을 제공합니다.

  • 필요 헤더 파일

      #include "storage/StoragePreferences.h"
    
  • 관련 함수

      // Storage function
      static bool putString(const std::string &key, const std::string &val);
      static bool putInt(const std::string &key, int val);
      static bool putBool(const std::string &key, bool val);
      static bool putFloat(const std::string &key, float val);
    
      // Delete the specified key
      static bool remove(const std::string &key);
      // Clear storage data
      static bool clear();
    
      // Get function. The corresponding key value cannot be obtained, then the default value of defVal is returned
      static std::string getString(const std::string &key, const std::string &defVal);
      static int getInt(const std::string &key, int defVal);
      static bool getBool(const std::string &key, bool defVal);
      static float getFloat(const std::string &key, float defVal);
    

[!Warning]

  1. 이 인터페이스는 플래시에 데이터를 파일 형태로 저장하므로 잦은 저장은 플래시 손상을 유발할 수 있으니 지양해야 합니다.
  2. 데이터 저장을 위한 파티션의 크기가 제한되어 있습니다. 모델에 따라 파티션의 크기는 다르지만, 512KB를 넘지 않게 유지하는 것을 권장합니다.

사용 예제

  • 저장

      //Save the string, use "username" as the alias, the value is the name string
      const char* name = "zhang san";
      StoragePreferences::putString("username", name);
    
      //Save the boolean variable, alias "power", the value is true
      StoragePreferences::putBool("power", true);
    
      //Save a floating point number, aliased to "temperature", the value is 30.12
      StoragePreferences::putFloat("temperature", 30.12);
    
      //Save the integer, use "age" as the alias, the value is 20
      StoragePreferences::putInt("age", 20);
    
  • 읽기

    //Read the value of the "username" key, if there is no value, return an empty string
    std::string name = StoragePreferences::getString("username", "");
    //Log print the read string
    LOGD("username %s\n", username.c_str());
    
    //Read the Boolean variable, if there is no value, then specify to return false
    bool power = StoragePreferences::getBool("power", false);
    
    //Read floating-point number, if there is no value, specify to return 0
    float temperature = StoragePreferences::getFloat("temperature", 0);
    
    //Read floating-point number, if there is no value, specify to return 0
    int age = StoragePreferences::getInt("age", 18);
    
  • 삭제

      // Clear a value individually
      StoragePreferences::remove("username");
      StoragePreferences::remove("power");
      StoragePreferences::remove("temperature");
      StoragePreferences::remove("age");
      // Clear all values
      StoragePreferences::clear();
    
  • 수정
    만약 특정 값을 수정하고 싶다면, 같은 키를 이용해 새로운 값을 저장합니다.

powered by Gitbooklast modified: 2020-12-09 11:09:06

results matching ""

    No results matching ""