Nativescript 8.1.2 application-settings删key后get方法不返回默认值问题
NativeScript application-settings异常行为问题解答
1. 异常行为的原因
核心问题是代码存在导入错误,导致方法调用未生效:
- 你没有导入
remove方法就直接调用,该操作实际未执行,目标key的旧存储值仍然存在:之前你应该给attribute_name_string存过空字符串、给attribute_name_number存过0,remove未生效的情况下,get方法会直接读取旧值,不会触发默认值返回逻辑。 - 第二组测试代码仅导入了
setNumber,没有导入getNumber方法,调用的getNumber属于未定义的错误方法,返回值自然不符合预期。
正确的导入示例:
// 需导入所有用到的方法,不能遗漏 import { getString, getNumber, remove } from '@nativescript/core/application-settings';
2. 正确清除存储变量的方案
按如下操作即可保证get方法正常返回默认值:
- 第一步必须确保所有用到的
remove、getXXX、setXXX方法都从application-settings模块正确导入。 - 调用
remove方法后可以用hasKey()方法校验key是否真的被清除,完整示例代码如下:
import { getString, getNumber, remove, hasKey } from '@nativescript/core/application-settings'; // 清除字符串存储项测试 remove("attribute_name_string"); // 校验清除结果,输出false则代表清除成功 console.log("attribute_name_string是否存在:", hasKey("attribute_name_string")); const strVal = getString("attribute_name_string", "DEFAULT VALUE"); console.log("Print My Local Atribute = ", strVal); // 输出:Print My Local Atribute = DEFAULT VALUE // 清除数字存储项测试 remove("attribute_name_number"); // 校验清除结果,输出false则代表清除成功 console.log("attribute_name_number是否存在:", hasKey("attribute_name_number")); const numVal = getNumber("attribute_name_number", 121); console.log("Print My Local Atribute Number = ", numVal); // 输出:Print My Local Atribute Number = 121
- 如果需要一次性清空所有存储的变量,可直接调用
clear()方法:
import { clear } from '@nativescript/core/application-settings'; clear();
内容的提问来源于stack exchange,提问作者ittradco
相关产品推荐
相关产品推荐

