You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套结构体调用报错:Argument passed to call that takes no arguments

问题排查与解决

一、结构体初始化错误

你的Parameters2结构体定义时直接给inputparameters赋值了默认的inputParameters实例,且未定义接收参数的初始化器。Swift结构体默认生成无参的成员初始化器,因此传入inputParameters实例时会触发“Argument passed to call that takes no arguments”错误。

修正方案:

调整Parameters2结构体,使其接收inputParameters实例作为初始化参数,同时保证属性名与目标参数的"inputParameters"键名一致(注意大小写):

struct Parameters2: Encodable {
    let inputParameters: inputParameters
    
    init(inputParameters: inputParameters) {
        self.inputParameters = inputParameters
    }
}

struct inputParameters: Encodable {
    let A1: String
    let B1: String
    let C1: String
    let D1: String
}

正确创建实例:

let inputParams = inputParameters(A1:"something", B1:"something", C1:"something", D1:"something")
let params = Parameters2(inputParameters: inputParams)
// 结构体初始化不会返回nil,无需guard let判断

二、AFNetworking请求调用类型不匹配

executePost方法参数为Parameters2类型,但调用时传入了JSONEncoder().encode(params)返回的Data类型,导致类型不匹配错误。

修正方案:

AFNetworking的JSONParameterEncoder支持直接处理Encodable类型参数,无需手动编码,直接传入Parameters2实例即可:

// 先创建正确的参数实例
let inputParams = inputParameters(A1:"something", B1:"something", C1:"something", D1:"something")
let params = Parameters2(inputParameters: inputParams)

// 调用executePost
executePost(parameters: params) { json, error in
    if let error = error {
        print(error.localizedDescription)
    } else if let json = json {
        print(json)
    }
}

优化请求方法的响应处理:

原方法中response.value是Data?类型,直接转Any不规范,建议改用responseJSON自动解析JSON:

func executePost(parameters: Parameters2, completion: @escaping (Any?, Error?) -> Void) {
    AF.request("myURL",
               method: .post,
               parameters: parameters,
               encoder: JSONParameterEncoder.default,
               headers: headers)
    .responseJSON { response in
        debugPrint(response)
        
        switch response.result {
        case .success(let json):
            completion(json, nil)
        case .failure(let error):
            completion(nil, error)
        }
    }
}

内容的提问来源于stack exchange,提问作者Mansidak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:45:22