Swift3/Alamofire4 迁移,必须使所有元素都'as AnyObject' [字符串:AnyObject]



我有以前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的许多以前的使用,因此结构和枚举也将被接受。

最新更新