我在一个单独的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()
当我第一次调用按钮功能时,如何从视图控制器中获取数组?
答案 0 :(得分:0)
设置resourceID后,您没有更新ViewController。您应该调用完成块或其他东西来通知您的VC,或者在最坏的情况下向该属性添加DidSet
。
VC.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
函数中,检查闭包中的保留周期。