LocalStorageUtil.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import { sys } from "cc"
  2. export class LocalStorageUtil {
  3. private static _inst:LocalStorageUtil;
  4. public static getInstance(): LocalStorageUtil{
  5. if(!this._inst)this._inst=new LocalStorageUtil();
  6. return this._inst;
  7. }
  8. //缓存
  9. temporary: Map<string, any>;
  10. constructor() {
  11. this.temporary = new Map<string, any>();
  12. }
  13. private _user_id:string|null;
  14. public setUserId(uk:string):void{
  15. this._user_id=uk;
  16. }
  17. /**
  18. * 缓存变量存储区别用户
  19. * @param {*} key
  20. * @param {*} value
  21. */
  22. set(key: string, value: any): any {
  23. if (typeof value === 'object') {
  24. try {
  25. value = JSON.stringify(value);
  26. }
  27. catch (e) {
  28. console.error(`解析失败,str = ${value}`);
  29. return;
  30. }
  31. }
  32. else if (typeof value === 'number') {
  33. value = value + "";
  34. }
  35. if (this._user_id)
  36. sys.localStorage.setItem(this._user_id + "_" + key, value);
  37. else
  38. sys.localStorage.setItem(key,value);
  39. return value;
  40. }
  41. /**
  42. * 获取缓存变量区别用户
  43. * @param {*} key
  44. * @returns
  45. */
  46. private get(key: string): string {
  47. if (null == key) {
  48. console.error("存储的key不能为空");
  49. return null!;
  50. }
  51. let data;
  52. if (this._user_id)
  53. data = sys.localStorage.getItem(this._user_id + "_" + key);
  54. else
  55. data = sys.localStorage.getItem(key);
  56. if (!data) return undefined;
  57. return data;
  58. }
  59. /** 获取指定关键字的数值 */
  60. getNumber(key: string, defaultValue: number = 0): number {
  61. var r = this.get(key);
  62. if (r == "0") {
  63. return Number(r);
  64. }
  65. return Number(r) || defaultValue;
  66. }
  67. /** 获取指定关键字的布尔值 */
  68. getBoolean(key: string): boolean {
  69. var r = this.get(key);
  70. return Boolean(r) || false;
  71. }
  72. /** 获取指定关键字的JSON对象 */
  73. getJson(key: string, defaultValue?: any): any {
  74. var r = this.get(key);
  75. return (r && JSON.parse(r)) || defaultValue;
  76. }
  77. /** 获取指定关键字的JSON对象 */
  78. getObject(key: string): any {
  79. let data= this.get(key);
  80. try {
  81. const jsonObj = JSON.parse(data)
  82. return jsonObj;
  83. } catch (error) {
  84. return data;
  85. }
  86. }
  87. /**
  88. * 删除缓存变量
  89. * @param {*} key
  90. */
  91. public removeNormalObject(key: string): any {
  92. sys.localStorage.removeItem(key);
  93. }
  94. /**
  95. * 缓存变量存储
  96. * @param {*} key
  97. * @param {*} value
  98. */
  99. setNormalObject(key: string, value: any): any {
  100. sys.localStorage.setItem(key, JSON.stringify(value));
  101. return value;
  102. }
  103. /**
  104. * 获取缓存变量
  105. * @param {*} key
  106. * @returns
  107. */
  108. getNormalObject(key: string): string {
  109. let data;
  110. data = sys.localStorage.getItem(key);
  111. if (!data) return undefined;
  112. try {
  113. const jsonObj = JSON.parse(data)
  114. return jsonObj;
  115. } catch (error) {
  116. return data;
  117. }
  118. }
  119. /**
  120. * 删除缓存变量
  121. * @param {*} key
  122. */
  123. removeObject(key: string) {
  124. sys.localStorage.removeItem(key);
  125. }
  126. /**
  127. * 临时变量存储
  128. * @param {*} key
  129. * @param {*} value
  130. */
  131. setTempObject(key: string, value: any) {
  132. this.temporary.set(key, value);
  133. }
  134. /**
  135. * 获取临时变量
  136. * @param {*} key
  137. * @returns
  138. */
  139. getTempObject(key: string): any {
  140. return this.temporary.get(key);
  141. }
  142. /**
  143. * 删除临时变量
  144. * @param {*} key
  145. */
  146. removeTempObject(key: string) {
  147. this.temporary.delete(key);
  148. }
  149. }