首页 文章

Alamofire 无视封闭 sets/handles 数据

提问于
浏览
1

我正在使用 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)
            }
        }
    }
}

我在主视图控制器文件中的一个设置函数中调用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()里面super.viewDidLoad()的地方叫这个

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

我正在关注这个 youtube 视频视频指南完全相同的事情,除了他们的请求通过。

我错过了什么?

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

1 回答

  • 0

    一切都是关于 async stuff.your 在 func 中声明NetworkingClient对象叫setupView和 Alamofire 使用.background线程做 stuff.so 时间执行networkingClient.execute不清楚然后setUpView deallocate 从内存和所有它的对象都消失了包括NetworkingClient .so 以防止这只是声明let networkingClient = NetworkingClient()功能之外

相关问题