当我将Alamofire函数与类似UserDefaulfts.standard.object
的某些CoreData一起使用时,xcode会引发错误Extra Argument in call
,我尝试了类似HTTPMethod
和.JSONEncoding
的Stackoverflow中的所有Ans但不会发生
func Sync(){
let url = "http://abcd.com/reportlist"
let parameters = ["sort_by":"month_year",
"start":"1",
"end":"10"]
let key2 = UserDefaults.standard.object(forKey: "accessToken")
let headers = [
"Authorization": key2,
"Content-Type": "application/x-www-form-urlencoded"]
Alamofire.request(url, method: .post, parameters: parameters, headers: headers).responseJSON { response in
if response.result.isSuccess
{
var dictVal = response.result.value
let data1 = response.data
.................
答案 0 :(得分:1)
按住选项键,然后按object(forKey
功能以阅读文档提示。您会看到该函数的返回类型是可选的,因为在您传递的键下无法存储任何内容,对吗?因此,您的key2
常量也是Optional类型。
然后,当您在字典中使用它时,headers
本身将变成"String: Optional(String)"
类型,因为其中一个值是Optional(键2)。
Alamofire期望在[String: String]
参数中使用headers
字典类型,并且由于您的headers
字典类型不匹配,因此会产生此错误-extra argument
。像I don't know why you pass it to me I do not expect anything of type like that
就是这样
因此,您可以使用string(forKey
方法,以防万一在传递的密钥下没有存储任何内容时返回空字符串,或者提供类似的默认值
let key2 = (UserDefaults.standard.object(forKey: "accessToken") as? String) ?? "defaultAccessTokenOrNothing"
的结果与第一个建议相同
答案 1 :(得分:0)
此处使用的键是字符串类型,并且在标头传递中,您未提及标头中的变量类型
在我使用此
之前 let key2:String = UserDefaults.standard.object(forKey: "accessToken") as! String
xcode再次乐于编写代码...