【发布时间】:2026-02-15 10:25:01
【问题描述】:
我正在编写一个在 Swift 3/Xcode 8 中包含 Alamofire 网络请求的方法。当包装在标准函数中时,以下代码块编译时不会出错:
func registerUser(firstName: String, lastName: String, email: String, username: String, password: String, profilePicture: String, completion: @escaping(JSON?) -> ()) {
let params: [String:Any]? = [
"first_name" : firstName,
"last_name" : lastName,
"email" : email,
"username" : username,
"password" : password,
"profile_pic" : profilePicture
]
Alamofire.request("\(baseURL)/users/create", method: .post, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
switch response .result {
case .success(let value) :
completion(JSON(value))
case .failure(let error) :
let error = error as Error
print(error.localizedDescription)
completion(nil)
}
}
}
但是,当我将此函数设为静态时,我收到错误“调用中的额外参数'方法'”。我尝试了帖子中列出的具有类似问题的解决方案,但没有积极的结果。知道可能导致此问题的原因吗?
【问题讨论】:
-
尝试删除标头,如果它是 nil 或者如果不是 nil 那么它应该是 [String: String]
-
这可能意味着在同一范围内有一个类似的静态函数。你能在包含类/结构的同一范围内发布其他代码吗?
-
删除标题会导致相同的结果。在同一范围内没有类似的静态方法。这是该类中当前包含的唯一方法。
-
baseURL定义在哪里? -
问题已解决。看起来这是一个涉及 baseURL 在方法之外的范围问题。