【发布时间】:2019-04-21 11:40:38
【问题描述】:
我必须向服务器发送请求。保存用户记录。用户记录包含 Subject 的模型,并且该 Subject 还包含多个模型和数组。让我给你举个小例子。
@ignore
public class SubjectModel: Codable {
public var Name : String? = ""
public var Price : Int? = 0
public var ISBN : String? = ""
public var listTeachers : [TeacherModel]? = []
}
public class TeacherModel: Codable {
public var Name : String? = ""
public var PhoneNo : String? = ""
public var listClasses: [ClassModel]? = []
}
public class ClassModel: Codable {
public var Name : String? = ""
public var Section : String? = ""
public var RoomNo : String? = ""
}
所以我必须发送 SubjectModel,你可以看到 SubjectModel 包含多个 InnerModel 数组。所有模型都是可编码的。
所以我的 web 服务所需的 JSON 必须如下所示
{ApiKey:"asas-dsadas-xyz-xyz","StudentSubjects":{现在来了 arrays,"InnerList":[这里是内部数组]}}
问题:
- 如您所见,我已将 Codables 实施到我的模型中,所以我的 Json 越来越好,但我无法附加 Api Key
- 我也不知道如何发送诸如 Alamofire 参数之类的东西。
- 或者您可以简单地说“如何以 json 格式发送 StudentSubject 和 Apikey”
请帮助我,我在敲我的头,但无法在服务器端得到回复,事实上我得到了空值。
UPDATE1:我就是这样做的
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(mySubjectModel)
let json = String(data:jsonData,encoding:String.Encoding.utf8)
let parameter: [String:AnyObject] = [
"StudentSubjects" : json as AnyObject,
"ApiKey":"xyz-zyz-zyz"
]
然后像这样发送
Alamofire.request(Common.URL+ServiceMethodName, method: .post, parameters:parameter, encoding: JSONEncoding.default, headers: nil) .responseJSON { response in
【问题讨论】:
-
无法附加ApiKey是什么意思?关于第二个问题,我认为这是一个很好的例子,如何发送参数stackoverflow.com/a/32013715/1856499
-
@m1sh0 很简单,我必须发送 StudentSubject 数组,我可以从 codable 中获取,但是当我得到 StudentSubjectm 的 Json 时,我无法在其中附加 Apikey,实际上我是初学者在iOS中,但是需要交付这个应用,我是android开发者,所以在Android中我们使用发送JsonArray和JsonObect并编写解析器,这里我学习了codable,但现在我很无奈。
-
@m1sh0 simple 我想知道如何以json格式发送StudentSubject和Apikey数组
-
好的,首先你需要所有对象让参数的字典:[String: Any] = ["ApiKey":"asas-dsadas-xyz-xyz","StudentSubjects": [subjectModel1,sm2.. .]] 并将其传递给 Alamofire.request。如果添加编码,Alamofire 会将对象转换为 json: JSONEncoding.default
-
请回复我,以及如何发送 Subjectmodel1, sm2 in list ?
标签: ios json swift4 alamofire codable