HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中将JSON转换为模型值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我寻求更多关于 Swift的知识的过程中,我正在寻找改进我的应用程序的方法,并注意到我正在做出假设的一些地方,也许我不应该这样做.

在创建一个新对象时,让我们说一个’学生’,他们需要诸如名字(String),年龄(int)和得分(Float)之类的东西.我从JSON文件中读取这些内容,并将它们放入如下对象中:

// note,details is a [String:Any] type
let name = details["name"] as! String
let age = details["age"] as! Int 
let score = Float(details["score"])
self.student = student(name: name,tutor_group: tutor_group,score: score)

所以我的问题如下;
1.我应该如何修改我的代码以检查如果某个值不是数字,应该在哪里,变量只是零,甚至更好0?
2.如果词典中的键不存在怎么办?
3.有不同的方法,如果是这样,哪种方法最佳?

请注意,我希望保持此代码尽可能短 – 如果每行的if / else语句不是我正在寻找的.

非常感谢你提前!

解决方法

Swift团队建议的解决方

最近Apple @L_403_1@提出了解决这个问题的方法.

您可以通过这种方式定义student结构(或类)

struct student {

    let name: String
    let age: Int
    let score: Float

    init?(json: [String:Any]) {
        guard
            let name = json["name"] as? String,let age = json["age"] as? Int,let score = json["score"] as? Float
            else { return nil }
        self.name = name
        self.age = age
        self.score = score
    }
}

这种方法的好处

>您封装逻辑以将JSON转换为student结构本身内的student
>如果JSON不包含有效数据(例如,没有具有有效Int的年龄字段),则初始化程序失败并返回nil.这意味着没有办法创建一个缺少字段的学生(这是一件好事),这种情况不会导致崩溃.

更多

我上面链接的帖子还描述了一种更高级的方法,其中缺少字段/值会引发异常.但是,如果您不需要记录(或通知调用方)为什么初始化失败,则不需要此操作.

大佬总结

以上是大佬教程为你收集整理的ios – 在Swift中将JSON转换为模型值全部内容,希望文章能够帮你解决ios – 在Swift中将JSON转换为模型值所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。