我有以前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迁移问题
您将类型为[String: Any]
的文字转换为[String: AnyObject]
来分配给parameters
,这就是编译器抱怨的原因。
如果在赋值结束时移除强制转换,并将parameters
的类型更新为[String: Any]
,则应该可以工作。
这是由于Swift 3的变化,它基本上用Any
取代了AnyObject
的许多以前的使用,因此结构和枚举也将被接受。