guoyn
guoyn
  • 发布:2016-01-08 15:16
  • 更新:2016-01-11 19:48
  • 阅读:1127

iphone5 IOS7.0.2机器create webView时传递的extraArgs Map为什么会自动排序?

分类:HTML5+

iphone5 IOS7.0.2机器:
在宿主页面用myWebView = plus.webview.create(url, viewId, {
left: "20%",
width: "80%",
popGesture: "none"
},extraArgs);
该方式创建新的view时,传递的extraArgs到新的view后,在新的webView中获取到的extraArgs map和在宿主页面传递extraArgs map中的顺序不同,新的webView中的extraArgs会根据key code的某种顺序排列。

例如extraArgs实例数据:  

宿主页面:{
"goodsSpecMap" : {
"rongliang" : 57,
"yanse" : 49
},
"aaa" : "222",
"bbb" : "111"
}
子页面: {
"aaa" : "222",
"bbb" : "111",
"goodsSpecMap" : {
"yanse" : 49,
"rongliang" : 57
}
由此可见,不仅改变一级map中的排列顺序,二级参数的map中的顺序也被改变。

2016-01-08 15:16 负责人:无 分享
已邀请:
DCloud_IOS_XTY

DCloud_IOS_XTY

跨页面只是数据的传递并不是对象的传递不能保证顺序对应

  • guoyn (作者)

    感谢您的回复,但是传递的数据有自定义的Map数据模型的话,不应该改变用户自己传递的参数对象的内部结果。比如上述的问题中的goodsSpecMap这个参数值。

    2016-01-11 10:57

DCloud_App_Array

DCloud_App_Array

实际json对象采用的key-value数据传递(数据无顺序影响),在底层实现中通过了hash散列保存会引起数据顺序的变化。
在实际应用中可以使用以下方法来解决排序问题:

  1. json数据中添加排序字段,在接收的页面中根据字段重新排序;
  2. json数据中使用数组,如{data:[{},{}]}。

该问题目前已经被锁定, 无法添加新回复