【发布时间】:2018-07-21 20:17:28
【问题描述】:
我正在解析基于索引存储到数组中的 JSON 数据。 我的 JSON 包含类名和部分。
这是我的 JSON:
{"errorCode":"0","msg":"Success!!!","classDropdown":[{"schoolName":"Sales School","schoolStatus":"1","standardName": "1","standardId":"13","sectionName":[{"sectionName":"A"},{"sectionName":"B"}]},{"schoolName":"销售学校"," schoolStatus":"1","standardName":"2nd","standardId":"14","sectionName":[{"sectionName":"B"} ]}
代码:
var standard_data = [String]()
var Section_Data = [String]()
func classdetails()
{
var errorCode = "1"
let sataff = "getClassDetails?staffId=" + staffId
var request = URLRequest(url: URL(string: sataff,
relativeTo: URL(string: url+"/rkapi/api/"))!)
let session = URLSession.shared
request.httpMethod = "GET"
let task = session.dataTask(with:request,completionHandler:{(d,response,error)in
do{
if let data = d {
if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary{
errorCode = String(describing: jsonData["errorCode"]!)
if errorCode == "0" {
if let message_list = jsonData["classDropdown"] as? NSArray {
self.standard_data.removeAll()
self.Section_Data.removeAll()
for i in 0 ..< message_list.count {
if let message = message_list[i] as? NSDictionary {
let StandaradName = message["standardName"] as? String
self.standard_data.append(StandaradName!)
let section_values = message["sectionName"] as? NSArray
self.count = (section_values?.count)!
for i in 0..<self.count{
if let classdetails = section_values?[i] as? NSDictionary {
print("count of the classdetails",classdetails.count)
for i in 0..<classdetails.count
{
let sectiondetails = classdetails["sectionName"] as? String
self.Section_Data.append(sectiondetails!)
}
}
}
}
}
}
} else {
}
} else {
self.displayAlert("nodata", message: "Data Not Available. Please try again")
}
}else {
}
} catch let err as NSError {
print("JSON Error \(err)")
}
})
task.resume()
}
解析 JSON 数据后,我得到了这个:
当我单击类名时,我想要在部分弹出菜单中显示的类是什么部分,但我尝试了,但它显示了所有部分。
例如:
类:第一 ----> 部分:A 部分 B节如果选择第一堂课,它将显示我做错的所有部分
【问题讨论】:
-
一如既往:代码非常Objective-C-ish。请不要在 Swift 中使用
NSArray / NSDictionary。使用本机类型[[String:Any]] / [String:Any]。变量名应该以小写字母开头并且是 camelCased 而不是 snake_cased。URLRequest是多余的。GET是默认值,因此只需传递URL。不要使用基于索引的for循环,使用快速枚举 (for message in message_list)。最后,请不要将 JSON 数据发布为图像,发布文本。 -
@vadian 谢谢你的重播