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

标签 ios swift alamofire

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

相关文章:

ios - Swift 3 中的计数元素

ios - UITableview 中各部分之间的空间

ios - 带有部分和搜索字段的 UITableView

ios - 在 UITableview 的 headerview 中将动态图像添加到 UIView

ios - 使用 Alamofire 和 Swift 4 上传图片时出现问题

ios - 不区分大小写的SearchBar Xcode

iOS 7 UITextView 垂直对齐

ios - 核心数据-[Decodable.Address initWithCoder :]: unrecognised selector sent to instance

ios - siwfty json 解析失败

iphone - 在应用程序设置中设置 iPhone 应用程序语言有效,但应用程序名称不会更改