可以通过以下步骤实现:
func fetchJSONData(completion: @escaping (Result<[String: Any], Error>) -> Void) {
guard let url = URL(string: "http://example.com/api/data") else {
completion(.failure(NSError(domain: "Invalid URL", code: 0, userInfo: nil)))
return
}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let error = error {
completion(.failure(error))
return
}
guard let data = data else {
completion(.failure(NSError(domain: "No data received", code: 0, userInfo: nil)))
return
}
do {
let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
completion(.success(json ?? [:]))
} catch {
completion(.failure(error))
}
}
task.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
fetchJSONData { (result) in
switch result {
case .success(let json):
// 在这里处理JSON数据,可以将其传递给另一个视图控制器
DispatchQueue.main.async {
self.navigateToNextViewController(with: json)
}
case .failure(let error):
// 处理错误情况
print("Error: \(error)")
}
}
}
func navigateToNextViewController(with json: [String: Any]) {
// 创建另一个视图控制器,并将JSON数据传递给它
let nextViewController = NextViewController()
nextViewController.jsonData = json
// 在这里进行视图控制器的跳转
// 例如,使用导航控制器进行push或present
// navigationController?.pushViewController(nextViewController, animated: true)
// present(nextViewController, animated: true, completion: nil)
}
在上述示例中,fetchJSONData方法使用URLSession发送HTTP请求并获取JSON数据。在成功获取到数据后,将其传递给navigateToNextViewController方法,该方法创建另一个视图控制器并将JSON数据传递给它。你可以根据实际需求进行视图控制器的跳转操作。
这是一个基本的实现示例,具体的实现方式可能会根据项目的需求和架构而有所不同。在实际开发中,你可能还需要处理网络请求的错误、对JSON数据进行解析和处理等。
领取专属 10元无门槛券
手把手带您无忧上云