【发布时间】:2018-10-26 13:01:24
【问题描述】:
我是 Swift 编程新手。我必须使用 Swift3 中的 httpRequest 将以下 JSON 请求发送到服务器。
{
"CompanyId": 162,
"RollupYear": 2018,
"UserId": 1609,
"datarollup": [{
"Name": "Thank You Cards",
"RollupYear": 2018,
"DataRollupColumnID": 210,
"CurrentValue": 520
},
{
"Name": "Prospecting Calls",
"RollupYear": 2018,
"DataRollupColumnID": 212,
"CurrentValue": 1300
}
],
"Seasonalitylist": [{
"CompanyPeriodId": 386,
"UserId": 1609,
"Seasonality": 25
},
{
"CompanyPeriodId": 387,
"UserId": 1609,
"Seasonality": 25
}
]
}
所以,为了以这种格式发送 JSON,我创建了一个名为“RequestModel”的实体类:
import Foundation
class RequestModel {
var CompanyId: Int? = 0
var RollupYear: Int? = 0
var UserId: Int? = 0
var dataRollupArr = NSMutableArray()
var seasonalityArr = NSMutableArray()
}
class DataRollupModel {
var Name: String? = ""
var CurrentValue: Float? = 0.0
var RollupYear: Int? = 0
var DataRollupColumnID: Int? = 0
}
class SeasonalityModel {
var CompanyPeriodId: Int? = 0
var UserId: Int? = 0
var Seasonality: Int? = 0
}
我有我所有的值,谁能建议我如何将我的实体值添加到所需的 JSON 中。
注意:
这是我向服务器发送 JSON 请求以进行登录的代码:
func login(email:String, password:String, completion:@escaping (NSDictionary) -> ()) {
if let url = NSURL(string: baseurl+"login") {
let request = NSMutableURLRequest( url: url as URL)
let signInDict = ["UserName":email,"Password":password]
print(signInDict)
let jsonData = try! JSONSerialization.data(withJSONObject: signInDict, options: JSONSerialization.WritingOptions.init(rawValue: 0))
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("732rguiqfw9237ryu4k2141", forHTTPHeaderField: "KEY")
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
do{
if let data = data,
let jsonString = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
, error == nil {
completion(jsonString)
} else {
print("error=\(error!.localizedDescription)")
let errorDict = ["error_status":true,"message":error!.localizedDescription] as [String : Any]
completion(errorDict as NSDictionary)
}
}
catch{
print("error=\(error.localizedDescription)")
let errorDict = ["error_status":true,"message":error.localizedDescription] as [String : Any]
completion(errorDict as NSDictionary)
}
}
task.resume()
}
}
【问题讨论】:
-
不要在 Swift 中使用 NSStuff
标签: ios json post swift3 httprequest