gpt4 book ai didi

ios - Alamofire 忽略设置/处理数据的闭包

转载 作者:行者123 更新时间:2023-11-28 07:34:08 29 4
gpt4 key购买 nike

我正在使用 Alamofire 对虚拟数据源执行网络请求 https://jsonplaceholder.typicode.com/posts并在我的应用程序中呈现它。

我有一个名为 NetworkingClient.swift 的文件,它抽象了大部分逻辑并允许重复使用。

public class NetworkingClient {
typealias WebServiceResponse = ([[String: Any]]?, Error?) -> Void

func execute(_ url: URL, completion: @escaping WebServiceResponse) {
Alamofire.request(url).validate().responseJSON { response in
print(response)
if let error = response.error {
completion(nil, error)
} else if let jsonArray = response.result.value as? [[String: Any]] {
completion(jsonArray, nil)
} else if let jsonDict = response.result.value as? [String: Any] {
completion([jsonDict], nil)
}
}
}
}

我在主视图 Controller 文件中的设置函数中调用了 execute:

func setUpView() {
let networkingClient = NetworkingClient()
let posts_endpoint = "https://jsonplaceholder.typicode.com/posts"
let posts_endpoint_url = URL(string: TEST_URL_STRING)
networkingClient.execute(posts_endpoint_url) { (json, error) in
if let error = error {
print([["error": error]])
} else if let json = json {
print(json)
}
}
}

我在 super.viewDidLoad() 下的 viewDidLoad() 中调用它的地方

我在 response in 闭包中设置了断点,但我无法触发其中任何一个,事实上我认为它完全跳过了整个过程,我不知道为什么。

我正在关注 this youtube video除了他们的请求通过之外,视频指南做完全相同的事情。

我错过了什么?

我使用的是 Swift 4、XCode 10,在 iOS 12.1 上运行,我的 AlamoFire 版本是 4.7

最佳答案

这都是关于异步的东西。你在函数中声明 NetworkingClient 对象调用 setupView 和 Alamofire 使用 .background 线程来做东西。所以networkingClient.execute 的执行时间不清楚,之后 setUpView 从内存中释放,它的所有对象都消失了,包括 NetworkingClient。所以为了防止这种情况只需在函数外声明 let networkingClient = NetworkingClient()

关于ios - Alamofire 忽略设置/处理数据的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739217/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com