Swift3 / Alamofire4迁移,必须将所有元素作为AnyObject' for [String:AnyObject]

时间:2017-01-16 17:54:37

标签: swift xcode swift3 alamofire

我之前的Swift / Alamofire版本的旧代码在

之前运行良好
parameters = ["name":name, "description":description, "location":location, "start_time":start_time , "end_time":end_time/* ..etc */] as [String: AnyObject]

Alamofire.request(.PUT, url, parameters: parameters, encoding: .json, headers: ["Authorization": auth_token, AppVersionKey: AppVersionValue]).validate().responseJSON() { response in

    print("Status code of default pic call: \(response.response?.statusCode)")
            }

我知道我现在必须将其切换到

Alamofire.request(url, method: .put, ... , encoding: JSONEncoding.default ...)

但是我收到了parameters的Xcode错误和修复 - 它只是将as AnyObject添加到k,v对中的每个值,然后导致"表达式太复杂了,无法在合理的时间内解决......"错误。我怎么能用新的Swift3和Alamofire4做到这一点?甚至不确定这是Swift错误还是Alamofire迁移问题

1 个答案:

答案 0 :(得分:1)

您将parameters的文字类型[String: Any]转换为[String: AnyObject],这就是编译器抱怨的原因。

如果您在作业结束时删除演员表并将parameters的类型更新为[String: Any],那么它应该有效。

这是由于Swift 3的更改,它基本上取代了AnyObjectAny的许多以前的用途,因此结构和枚举也将被接受。