【问题标题】:save array data index wise after Json parsing in swift3在swift3中解析Json后明智地保存数组数据索引
【发布时间】: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_casedURLRequest 是多余的。 GET 是默认值,因此只需传递 URL。不要使用基于索引的 for 循环,使用快速枚举 (for message in message_list)。最后,请不要将 JSON 数据发布为图像,发布文本。
  • @vadian 谢谢你的重播

标签: arrays json swift swift3


【解决方案1】:

很难回答你的问题,因为它没有说得很清楚。我您的standard_data 属性绑定到您的CLASS 下拉列表,而您的Section_Data 属性绑定到您的SECTION 下拉列表。鉴于此,您观察到的行为一点也不奇怪。您只有一个 Section_Data 对象,您可以将所有 sectionNames 添加到其中。您对CLASS 的选择根本无法影响SECTION-dropdown 的呈现。您必须对选择做出反应(通过链接action-方法)并根据它从另一个数据结构切换Section 下拉列表的内容。

这可能是一个过于抽象的答案,但为了更具体,我们必须更多地了解您希望以不同方式工作的特定代码。请发布更多内容并作为一条友好的建议:在将其发布到 StackOverflow 之前,首先让它运行而不增加 dataTask 的复杂性,因为它似乎与 JSON 解析或数组无关因此,您的问题在于基本的 UI 处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多