微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Alamofire.responseJSon 的 completionHandler 中获取数据

如何解决如何在 Alamofire.responseJSon 的 completionHandler 中获取数据

我目前正在为 Destiny 2 API 制作应用程序。

我正在努力解决这个问题

这是我将哈希数据转换为项目名称的整个函数代码

我想返回最后保护的 name 变量,但是那个完成处理程序

函数结束后运行。

我在互联网上搜索过,但几乎每个人都只是在其中使用这些数据,而不是

函数返回。

我只需要“解析json并获取我想要的返回数据”

有什么想法吗?

item 参数的意思是“ item hash 来获取它的名字”
lang 参数表示“返回的语言”,如果是“en”则返回英文。
这是我也删减的数据“https://pastebin.com/1tV6fx9F

func hashToName(item: String,lang: String = "ko") (" want to return String "-> String ){
    let url = String(format: "https://www.bungie.net/platform/Destiny2/Manifest/DestinyInventoryItemDeFinition/\(item)")
    let param: [String: String] = ["lc": "\(lang)"]
    let head: HTTPHeaders = ["x-api-key": "b21e4d2d33234b82be6e56893554974b"]
    
    
    let doNetwork = AF.request(url,method:.get,parameters: param,encoder: URLEncodedFormParameterEncoder.default,headers: head)
    doNetwork.responseJSON {
        response in
        switch response.result {
        case .success(let site):
            guard let dict = site as? NSDictionary else { return }
            guard let res = dict["Response"] as? NSDictionary else { return }
            guard let prop = res["displayProperties"] as? NSDictionary else { return }
            guard let name: String = prop["name"] as? String else { return }
            
            print(name) // data I want to return
        case .failure(let err):
            print(err.localizedDescription)
        }
    }
}

解决方法

    func hashToName(item: String,lang: String = "ko",returnString: @escaping (String)->()) {
        let url = String(format: "https://www.bungie.net/platform/Destiny2/Manifest/DestinyInventoryItemDefinition/\(item)")
        let param: [String: String] = ["lc": "\(lang)"]
        let head: HTTPHeaders = ["x-api-key": "b21e4d2d33234b82be6e56893554974b"]
        
        
        let doNetwork = AF.request(url,method:.get,parameters: param,encoder: URLEncodedFormParameterEncoder.default,headers: head)
        doNetwork.responseJSON {
            response in
            switch response.result {
            case .success(let site):
                guard let dict = site as? NSDictionary else { return }
                guard let res = dict["Response"] as? NSDictionary else { return }
                guard let prop = res["displayProperties"] as? NSDictionary else { return }
                guard let name: String = prop["name"] as? String else { return }
                returnString(name)
                print(name) // data I want to return
            case .failure(let err):
                print(err.localizedDescription)
            }
        }
    }

//How to use
hashToName(item: "Your string") { str in
            print(str)
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。