本地存储 Storage
Storage 在本地存键值,底层是 Android DataStore。页面里带 name 的表单,和任务脚本里的 Storage.get* / Storage.put*,读的是同一份数据。
Storage.create(db) 会切到指定库,返回的实例用 put / get。不 create、直接 Storage.putInteger 走默认库,适合和表单 name 对应。读写类型必须一致,用 getInteger 去读 put 进去的字符串会出问题。
javascript
Storage.putInteger('zan_rate', 66);
let zanRate = Storage.getInteger('zan_rate');| 方法 | 作用 |
|---|---|
create(db) | 指定存储库,返回实例 |
put / get | 通用写入 / 读取 |
putInteger / getInteger 等 | 按类型读写 |
remove(key) | 删一个键 |
clear() | 清空当前库 |
contains(key) | 是否存在 |
create(db)
参数:
db {string}库名。不同模块用不同名字,避免互相覆盖
返回: {object} 该库的存储实例
javascript
let storage = Storage.create('myDb');
storage.put('user', 'test');页面表单带 name 时,也可以不 create,直接用默认库:
javascript
let zanRate = Storage.getInteger('zan_rate');
Storage.putInteger('zan_rate', 66);
Storage.remove('zan_rate');
Storage.clear();put(key, value)
参数:
key {string}键value {any}值
返回: {boolean} 是否写入成功
在 create 得到的实例上调用。
javascript
storage.put('user', 'test');get(key)
参数:
key {string}键
返回: 对应的值;不存在时为 null
javascript
let myUser = storage.get('user');
console.log(myUser);putInteger / putBoolean / putDouble / putObj / putArray
参数:
key {string}键value与方法对应的类型
返回: {boolean} 是否写入成功
putObj 会把对象或数组序列化为 JSON,支持嵌套结构(不能含 function)。数组也可 Storage.putObj('key', arr),与 putArray 等价;getObj / getArray 读同一键,不存在时前者返回 {}、后者返回 []。
javascript
storage.putInteger('age', 18);
storage.putBoolean('is_success', true);
storage.putDouble('money', 1000000.11);
storage.putObj('obj', {
name: 'DeekeScript',
age: 22,
tags: ['a', 'b'],
meta: { enabled: true }
});
storage.putArray('arr', [1, 2, 3, 'a', 'c', { name: 'deekeScript' }]);
Storage.putArray('checkbox_name', ['1', '2', '3']);
// 对象数组:putObj 与 putArray 均可
var comments = [
{ id: 'c_1', content: '很棒', enabled: true },
{ id: 'c_2', content: '支持', enabled: true }
];
Storage.putObj('dylc.comments', comments);
var saved = Storage.getObj('dylc.comments');
console.log(saved[0].content); // 很棒
// 嵌套配置对象
Storage.putObj('dylc.config', {
autoStart: true,
comments: comments
});
var cfg = Storage.getObj('dylc.config');
console.log(cfg.comments.length);getInteger / getBoolean / getDouble / getObj / getArray
参数:
key {string}键
返回: 与写入时相同类型的值(getObj 可读对象或数组)
和写入用同一套类型,不要混用。
javascript
storage.getInteger('age');
storage.getBoolean('is_success');
storage.getDouble('money');
storage.getObj('obj');
storage.getArray('arr');remove(key)
参数:
key {string}键
返回: {boolean} 是否删除成功
javascript
storage.remove('user');clear()
返回: {boolean} 是否清空成功
清掉当前库里的全部键。
javascript
storage.clear();contains(key)
参数:
key {string}键
返回: {boolean} 存在为 true
javascript
let hasUser = storage.contains('user');话术列表
内置话术存在 deekeScript:speech:default。type 为 0 是评论,1 是私信;enabled 为 true 表示启用。
javascript
let data = Storage.get('deekeScript:speech:default');
console.log(data);javascript
let speechData = JSON.parse(Storage.get('deekeScript:speech:default'));
let speechLists = speechData.speechLists;
let enabledComments = speechLists.filter(function (item) {
return item.type === 0 && item.enabled;
});
let enabledMessages = speechLists.filter(function (item) {
return item.type === 1 && item.enabled;
});
let randomComment = enabledComments[Math.floor(Math.random() * enabledComments.length)];
console.log(randomComment.content);