You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:36:04