【发布时间】:2023-04-02 07:24:02
【问题描述】:
好吧,我认为这不是一个大问题,但我错了。目前我正在做一个项目,我得到了大量的 JSON 回报。我正在取那些并制作我的模型。现在在我的模型中,我正在通过 guard 语句检查是否有任何值为 nil 的值。这是我的模型示例:
import Foundation
import SwiftyJSON
class profileModel {
var _phone_no: String?
var _full_name: String?
var _image: String?
var _email: String?
var _profile_pic: String?
var _rating: Int?
var _dob: String?
var _gender: String?
var _firstName: String?
var _lastName: String?
required init?(phone_no: String, full_name: String, image: String, email: String, profile_pic: String, rating: Int, dob: String, gender: String, firstName: String, lastName: String) {
self._phone_no = phone_no
self._full_name = full_name
self._image = image
self._email = email
self._profile_pic = profile_pic
self._rating = rating
self._dob = dob
self._gender = gender
self._firstName = firstName
self._lastName = lastName
}
convenience init?(json: JSON){
guard let phone_no = json["phone_no"].string,
let full_name = json["full_name"].string,
let image = json["profile_pic"].string,
let email = json["email"].string,
let profile_pic = json["profile_pic"].string,
let rating = json["rating"].int,
let dob = json["dob"].string,
let gender = json["gender"].string,
let firstName = json["first_name"].string,
let lastName = json["last_name"].string else {
print("Profile Detail Model Error")
return nil
}
self.init(phone_no: phone_no, full_name: full_name, image: image, email: email, profile_pic: profile_pic, rating: rating, dob: dob, gender: gender, firstName: firstName, lastName: lastName)
}
}
但是,当 JSON 返回中缺少任何 key 时,如何防止崩溃?似乎当我同时检查 key 和 values 时,班级变得非常大,必须有更好的方法。
【问题讨论】:
-
只要您使用的是SwiftyJSON,这不再是您担心的理由。看看this 部分。
-
不相关但非常糟糕的方法是带有前导下划线的属性(这不是 Objective-C)、snake_cased 变量名称、实际上不会失败的可失败初始化程序,因为所有传递的值都是非可选的并且示意性地声明所有属性作为可选的 don't care 不在场证明(再次强调,这不是 Objective-C)。