uni-app UTSJSONOBJECT 在ios下无法set增加新的值 get返回全是null 但console输出有数据

uni-app UTSJSONOBJECT 在ios下无法set增加新的值 get返回全是null 但console输出有数据

开发环境 版本号 项目创建方式
Mac 13.6 HBuilderX

示例代码:

rinfo.set("rcount",0);
console.log(rinfo.getNumber("rcount"));

操作步骤:

预期结果:

实际结果:

bug描述:

在ios写的插件里,利用UTSJSONOBJECT的set函数增加新的值,随后用get函数,取出来是null,用console打印出来,UTSJSONOBJECT是有新的值的,就是无法用get拿到值。


更多关于uni-app UTSJSONOBJECT 在ios下无法set增加新的值 get返回全是null 但console输出有数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以使用下标访问,get方法出现的问题下个版本修复

更多关于uni-app UTSJSONOBJECT 在ios下无法set增加新的值 get返回全是null 但console输出有数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用 UTSJSONObject 时,如果遇到在 iOS 下无法 set 增加新的值,且 get 返回全是 null 的问题,但 console 输出却有数据,可能是以下几个原因导致的:

1. UTSJSONObject 的 API 使用问题

  • 确保你正确使用了 UTSJSONObject 的 API。例如,set 方法用于设置键值对,get 方法用于获取值。如果使用方法不正确,可能会导致无法设置或获取数据。
  • 示例代码:
    let jsonObj = new UTSJSONObject();
    jsonObj.set("key", "value");  // 设置键值对
    let value = jsonObj.get("key");  // 获取值
    console.log(value);  // 输出 "value"
    

2. iOS 平台的兼容性问题

  • UTSJSONObject 在 iOS 和 Android 平台上的实现可能有所不同。如果你在 Android 上正常使用,但在 iOS 上出现问题,可能是平台兼容性问题。
  • 你可以尝试在 iOS 平台上使用 JSON.stringifyJSON.parse 来替代 UTSJSONObject,看看是否能解决问题。

3. 数据类型的差异

  • 确保你设置的值和获取的值类型一致。如果类型不一致,可能会导致 get 返回 null
  • 例如,如果你设置了一个字符串,但尝试获取时使用了一个不存在的键,或者类型不匹配,可能会导致返回 null

4. 调试和日志输出

  • 使用 console.log 输出 UTSJSONObject 的当前状态,确保在 set 之后,数据确实被正确设置。
  • 示例:
    let jsonObj = new UTSJSONObject();
    jsonObj.set("key", "value");
    console.log(jsonObj);  // 输出整个对象,检查是否正确设置
    

5. 更新 uni-app 和相关插件

  • 确保你使用的是最新版本的 uni-app 和相关插件。旧版本可能存在一些已知的 bug,更新到最新版本可能会解决问题。

6. 检查 iOS 的权限或限制

  • 在某些情况下,iOS 可能会对某些操作进行限制,导致无法正常设置或获取数据。检查是否有相关的权限或限制。

7. 使用原生插件或模块

  • 如果 UTSJSONObject 在 iOS 上确实存在问题,可以考虑使用原生插件或模块来处理 JSON 数据。例如,使用 Objective-CSwift 编写原生代码来处理 JSON 数据,并通过 uni-app 的插件机制进行调用。

8. 社区和官方支持

  • 如果以上方法都无法解决问题,可以尝试在 uni-app 的官方社区或 GitHub 仓库中搜索相关问题,或者提交一个新的 issue,寻求官方或社区的帮助。

示例代码

let jsonObj = new UTSJSONObject();
jsonObj.set("key1", "value1");
jsonObj.set("key2", 123);
jsonObj.set("key3", true);

console.log(jsonObj.get("key1"));  // 输出 "value1"
console.log(jsonObj.get("key2"));  // 输出 123
console.log(jsonObj.get("key3"));  // 输出 true
回到顶部