gpt4 book ai didi

ios - Alamofire Web 服务管理器在 viewController 中返回 nil

转载 作者:行者123 更新时间:2023-11-29 11:43:51 24 4
gpt4 key购买 nike

我想创建包含我所有请求的 AlamofireWebService 管理器,我只是在我的 viewControllers 中使用此类的类函数,并在 viewController 中使用响应
例如在 viewController 中是这样的:

 let cardResponse : String?
cardResponse = WebServiceManager.shared.getCardTitle()

我搜索并发现我应该在我的函数中使用转义 completionHandler,我这样写:

import Foundation
import Alamofire
import SwiftyJSON

class WebServiceManager {

static let shared : WebServiceManager = WebServiceManager()

let apiEndPoint = "My URL"

func getCardTitle(completionHandler: @escaping (NSDictionary?, Error?) -> ()) {
Alamofire.request("\(apiEndPoint)")
.responseJSON { response in
switch response.result {
case .success(let value):
print("from .success \(value)")
completionHandler(value as? NSDictionary, nil)
case .failure(let error):
completionHandler(nil, error)
}
}

}
}

在成功的情况下,打印工作正常,但在 viewController 中,它只打印 nil。

我的viewController:

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
WebServiceManager.shared.getCardTitle() { responseObject, error in
// use responseObject and error here

print("responseObject = \(responseObject); error = \(error)")
return
}

}

我应该怎么做才能在 viewController 中打印我的回复?

最佳答案

这意味着你的值不能转换为 NSDictionary 它有另一种类型。

completionHandler(value as? NSDictionary, nil)

请在管理器中尝试“伪代码”

if let dic = value as? [String: Any] {
debugPrint("Dic \(dic)")
} else if let str = value as? String {
debugPrint("String \(str)")
} else if let data = value as? Data, let str = String(data: data, encoding: .utf8) {
debugPrint("UTF8 String \(str)")
}

关于ios - Alamofire Web 服务管理器在 viewController 中返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053801/

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