升级路由器代码Alamofire 4.0和斯威夫特3
问题描述:
升级Alamofire斯威夫特3语法我不知道什么是基于URLRequestConvertible,(代码段目前不符合)升级路由器的最安全的方式。我已经尝试了一些东西,但我的感觉是URL编码可能会有所改变。升级路由器代码Alamofire 4.0和斯威夫特3
虽然Alamofire似乎已经改变了广泛的错误,我可以直接看到的是,“不用彷徨”触发编译器错误,一样ParameterCoding.URL即不再有效。
码型我有(可能在我的代码至少30米不同的地方)是:
// MARK: - AlamoFire Router
enum Router: URLRequestConvertible
{
static let baseURL = Singleton.sharedInstance.apiURL
static let apiKey: String = Singleton.sharedInstance.apiKey
static let applicationId: String = Singleton.sharedInstance.applicationId
case userPoints()
var method: Alamofire.Method
{
switch self
{
case .userPoints:
return .GET
}
}
var path: String
{
switch self
{
case .userPoints:
return "https://stackoverflow.com/users/points/user/\(Singleton.sharedInstance.user.id)"
}
}
var URLRequest: NSMutableURLRequest
{
let URL_val = URL(string: Router.baseURL)!
let mutableURLRequest = NSMutableURLRequest(URL: URL_val.URLByAppendingPathComponent(path))
mutableURLRequest.HTTPMethod = method.rawValue
// Send API key and Application ID in the header
mutableURLRequest.setValue("API-Key apiKey=\(Router.apiKey) applicationId=\(Router.applicationId)", forHTTPHeaderField: "X-Authorization")
let encoding = ParameterEncoding.URL
#if DEBUG
print(mutableURLRequest)
#endif
switch self
{
case .userPoints:
return encoding.encode(mutableURLRequest, parameters: nil).0
}
}
}
非常希望有人在Alamofire和斯威夫特3洞察力可以帮助我找出一个解决方案,以符合变化。
非常感谢提前!
答
我熟悉的设置。 .Get需要改成.get一件事。
let URL_val = Router.baseURL.asURL()
var urlRequest = URLRequest(url: URL_val.appendingPathComponent(path))
移动switch语句外的回报,后移动。
变化var urlRequest
到func asURLRequest() throws -> URLRequest
switch self {
case .userPoints:
urlRequest = try URLEncoding.default.encode(urlRequest, with: nil)
}
return urlRequest
他们有他们的文档的完整工作示例下CRUD &授权
谢谢你的回答!您是否可以编辑代码以包含您的更改?至于的.url,其实我已经尝试过,但编译器给你一个“类型‘方法’(又名OpaquePointer)没有成员‘得到’” – nights
改变方法'VAR方法:HTTPMethod'别的,你应该能够找到轻松地在“路由请求”部分的alamofire文档中。如果这不能解决所有问题,那么你应该非常接近,因为我没有注意到你提供的代码应该是一个问题。 – JustinM
好的。谢谢。这个怎么行:mutableURLRequest.setValue( “API密钥apiKey = \(Router.apiKey)的applicationID = \(Router.applicationId)”,forHTTPHeaderField: “X-授权”)是新Alamofire幕后所有这happning流? – nights