当我在 Alamofire 中使用 UserDefaults.standard.object 时,它显示“调用中的额外参数”错误

Posted

技术标签:

【中文标题】当我在 Alamofire 中使用 UserDefaults.standard.object 时,它显示“调用中的额外参数”错误【英文标题】:When i use UserDefaults.standard.object in Alamofire it shows "Extra argument in call" error 【发布时间】:2019-03-04 19:02:46 【问题描述】:

当我将 Alamofire 函数与 UserDefaulfts.standard.object 之类的 CoreData 一起使用时,xcode 将引发错误 Extra Argument in call 我尝试了 *** 中的所有答案,例如 HTTPMethod.JSONEncoding,但没有发生

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
            .................

【问题讨论】:

嗨。您介意选择您认为有帮助的答案吗? 【参考方案1】:

按住选项键并按object(forKey 功能阅读文档提示。您将看到该函数的返回类型是可选的,因为您传递的键下不能存储任何内容,对吧?所以你的 key2 常量也是 Optional 类型。

然后,当您在字典中使用它时,headers 本身变成了"String: Optional(String)" 类型,因为其中一个值是可选的(key2)。

Alamofire 需要 headers 参数中的 [String: String] 字典类型,并且由于您的 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" 与第一个建议的结果相同

【讨论】:

【参考方案2】:

这里使用的 Key 是 String 类型,在 Header 传递中,你没有在 header 中提及变量的类型

在我使用这个之前

let key2:String = UserDefaults.standard.object(forKey: "accessToken") as! String

xcode 再次乐于编码...

【讨论】:

如果您使用as! String,那么当“accessToken”不存在时应用程序将崩溃。你可以使用:as? String ?? ""(默认值)或guard...if let...或任何你想要的。仅当您确定它的值不是 nil 时才使用 ! 你知道还有string(forKey吗?但是它也返回一个可选的。

以上是关于当我在 Alamofire 中使用 UserDefaults.standard.object 时,它显示“调用中的额外参数”错误的主要内容,如果未能解决你的问题,请参考以下文章

当我在数据库中使用 Alamofire 发送三个数组帖子时出现错误?

在 swift 中使用 Alamofire 取消 api 请求

类变量分配在 Alamofire 请求块中不起作用

当我尝试存档应用程序时没有这样的模块“Alamofire”

从后台获取调用时,Alamofire 不工作

无法解析响应 alamofire swift 3