【发布时间】:2018-11-02 08:48:21
【问题描述】:
我有下一个结构:
struct PatientEntity{
let patientId: String
let firstName: String
let lastName: String
let gender: String
let birthDate: String?
let medicalDiagnosis: String?
let therapyDiagnosis: String?
let therapyGoals: String?
}
当我尝试将其序列化为 json 以便将其发送到服务器端时,由于 bithdate 上的 Optional word,我得到了异常。我试图用下一个代码删除可选词,但没有运气:
if let bithDate = self.patientBithDateTextField.text {
newPatient: PatientEntity = PatientEntity(
patientId: self.patientIDTextField.text!,
firstName: self.patientNameTextField.text!,
lastName: self.patientLastNameTextField.text!,
gender: self.getSelectedGender(),
birthDate: bithDate,
medicalDiagnosis: nil,
therapyDiagnosis: nil,
therapyGoals: nil
)
...call API
}
我的序列化代码是:
urlRequest.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
其中参数值为:
case .createPatient(let newPatient):
return ["patient": newPatient]
输出打印如下:
POST 字符串中的参数是:[“患者”: 患者实体(患者 ID:“fff”,名字:“rrr”, 姓氏:“rrrr”,性别:“女”,出生日期:可选(“2018-05-23”), 医疗诊断:无,治疗诊断:无,治疗目标:无)]
为了传递对象的序列化需要做什么?
例外是:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'JSON 写入中的类型无效 (_SwiftValue)'
【问题讨论】:
标签: ios swift serialization alamofire swift4