解析JSON第一次不起作用

时间:2017-07-14 15:22:25

标签: ios json swift

我在一个单独的swift类文件上有一个dataTask,用于将一些数据检索到数组中:

resourceIDs

当我第一次尝试调用我的按钮功能 时,我的ViewController的NSArray @IBAction func btnCheckAvailability(_ sender: UIButton) { showOverlayOnTask(message: "Please wait...") let dateFormatter = DateFormatter() let timeFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" timeFormatter.dateFormat = "HH:mm:ss" let date = dateFormatter.string(from: startDate) let time = timeFormatter.string(from: startDate) CheckAvailableModel().checkAvailable(resourceType: resourceType!, startDate: date, startTime: time, VC: self) if (resourceIDs.count > 0) { DispatchQueue.main.async { self.dismiss(animated: false, completion: { action in print(self.resourceIDs) }) } } else { DispatchQueue.main.async { self.dismiss(animated: false, completion: { action in print("No available resources") }) } } } 没有收到任何内容。当我再次调用我的按钮功能时,将填充该数组。

row_number()

当我第一次调用按钮功能时,如何从视图控制器中获取数组?

1 个答案:

答案 0 :(得分:0)

设置resourceID后,您没有更新ViewController。您应该调用完成块或其他东西来通知您的VC,或者在最坏的情况下向该属性添加DidSetVC.resourceIDs = result

另一方面,您可以更好地优化您的功能。

if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [[String: Any]] {
    let resourceIDs: [String] = []

    for jsonElement in jsonResult {
        let resourceID = jsonElement["ResourceID"]!
        resourceIDs.append(resourceID)
    }
    VC.resourceIDs = resourceIDs
}
else {
    print("Could not parse JSON!")
}

此外,在btnCheckAvailability函数中,检查闭包中的保留周期。