Error[8]: Undefined offset: 4, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述在 Swift 3中,具有可选值的数组的JSONSerialization失败.这在Swift 2中起作用(产生null作为预期的nil选项的JSON值). 编辑:它没有,但留在这里,因为这是我提出问题时的错误信念. 斯威夫特2: let a: [String!] = ["a","b","c"]let b: [String] = ["a","b","c"]let s: String! = " 在 Swift 3中,具有可选值的数组的JsONSerialization失败.这在Swift 2中起作用(产生null作为预期的nil选项的JsON值).

编辑:它没有,但留在这里,因为这是我提出问题时的错误信念.

斯威夫特2:

let a: [String!] = ["a","b","c"]let b: [String] = ["a","c"]let s: String! = "a"let c = ["a",s]NSJsONSerialization.isValIDJsONObject(a)    //trueNSJsONSerialization.isValIDJsONObject(b)    //trueNSJsONSerialization.isValIDJsONObject(c)    //true

斯威夫特3:

let a: [String?] = ["a",s]JsONSerialization.isValIDJsONObject(a)    //falseJsONSerialization.isValIDJsONObject(b)    //trueJsONSerialization.isValIDJsONObject(c)    //false

这是一个预期的更改吗?它似乎很容易出错,因为任何使用隐式类型构造的数组或字典现在可能对JsON无效(即使它们实际上不包含任何nil值).

另外,如何指定空值?

解决方法 更新:截至Swift 3.0.1 / Xcode 8.1 beta 2,可选项
自动桥接到NSNull实例,请参阅

> SE-0140 – Warn when Optional converts to Any,and bridge Optional As Its Payload Or NSNull

和Xcode 8.1测试版发行说明.

例:

let array: [String?] = [ "a",nil,"c"]let JsonData = try! JsONSerialization.data(withJsONObject: array)print(String(data: JsonData,enCoding: .utf8)!)// ["a",null,"c"]

Swift 2和3.0的上一个答案:只有NSNull()被序列化为JsON null,而不是选项
(独立于Swift版本).

可以像这样转换一组选项:

let a: [String?] = ["a","c"]let b = a.map { [+++] as Any? ?? NSNull() }print(b) // ["a",<null>,"c"]let d = try! JsONSerialization.data(withJsONObject: b)print(String(data: d,enCoding: .utf8)!) // ["a","c"]
总结

以上是内存溢出为你收集整理的在Swift 3中使用选项的JSONSerialization全部内容,希望文章能够帮你解决在Swift 3中使用选项的JSONSerialization所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
在Swift 3中使用选项的JSONSerialization_app_内存溢出

在Swift 3中使用选项的JSONSerialization

在Swift 3中使用选项的JSONSerialization,第1张

概述在 Swift 3中,具有可选值的数组的JSONSerialization失败.这在Swift 2中起作用(产生null作为预期的nil选项的JSON值). 编辑:它没有,但留在这里,因为这是我提出问题时的错误信念. 斯威夫特2: let a: [String!] = ["a","b","c"]let b: [String] = ["a","b","c"]let s: String! = " 在 Swift 3中,具有可选值的数组的JsONSerialization失败.这在Swift 2中起作用(产生null作为预期的nil选项的JsON值).

编辑:它没有,但留在这里,因为这是我提出问题时的错误信念.

斯威夫特2:

let a: [String!] = ["a","b","c"]let b: [String] = ["a","c"]let s: String! = "a"let c = ["a",s]NSJsONSerialization.isValIDJsONObject(a)    //trueNSJsONSerialization.isValIDJsONObject(b)    //trueNSJsONSerialization.isValIDJsONObject(c)    //true

斯威夫特3:

let a: [String?] = ["a",s]JsONSerialization.isValIDJsONObject(a)    //falseJsONSerialization.isValIDJsONObject(b)    //trueJsONSerialization.isValIDJsONObject(c)    //false

这是一个预期的更改吗?它似乎很容易出错,因为任何使用隐式类型构造的数组或字典现在可能对JsON无效(即使它们实际上不包含任何nil值).

另外,如何指定空值?

解决方法 更新:截至Swift 3.0.1 / Xcode 8.1 beta 2,可选项
自动桥接到NSNull实例,请参阅

> SE-0140 – Warn when Optional converts to Any,and bridge Optional As Its Payload Or NSNull

和Xcode 8.1测试版发行说明.

例:

let array: [String?] = [ "a",nil,"c"]let JsonData = try! JsONSerialization.data(withJsONObject: array)print(String(data: JsonData,enCoding: .utf8)!)// ["a",null,"c"]

Swift 2和3.0的上一个答案:只有NSNull()被序列化为JsON null,而不是选项
(独立于Swift版本).

可以像这样转换一组选项:

let a: [String?] = ["a","c"]let b = a.map {  as Any? ?? NSNull() }print(b) // ["a",<null>,"c"]let d = try! JsONSerialization.data(withJsONObject: b)print(String(data: d,enCoding: .utf8)!) // ["a","c"]
总结

以上是内存溢出为你收集整理的在Swift 3中使用选项的JSONSerialization全部内容,希望文章能够帮你解决在Swift 3中使用选项的JSONSerialization所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1009444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存