0
在Swift 3.0中,我有以下用于生成URLRequest的throws函数。asURLRequest Alamofire尝试错误
func asURLRequest() throws -> URLRequest {
let result: (path: String, parameters: [String: AnyObject]?) = try {
switch self {
case .PopularPhotos (let userID, let accessToken):
let params = try ["access_token": accessToken]
let pathString = try "/v1/users/" + userID + "/media/recent"
return try (pathString, params as [String : AnyObject]?)
case .requestOauthCode:
let pathString = try "/oauth/authorize/?client_id=" + Router.clientID + "&redirect_uri=" + Router.redirectURI + "&response_type=code"
return try (pathString, nil)
default: break
}
}()
然而,当我去调用该函数:
let request = Instagram.Router.requestOauthCode.asURLRequest()
我得到以下错误:“呼叫可以抛出,但没有打上‘尝试’,而不是处理的错误。
我已经看过几个教程到错误处理和投掷功能雨燕3.0,我无法弄清楚如何在这里处理错误
完整的类代码如下:
struct Instagram {
enum Router: URLRequestConvertible {
static let baseURLString = "https://api.instagram.com"
static let clientID = "cf97d864faf14f90a1557c4b972c990e"
static let redirectURI = "http://www.example.com/"
static let clientSecret = "7f1ce6147f924afc92dea31f5354ca06"
case PopularPhotos(String, String)
case requestOauthCode
static func requestAccessTokenURLStringAndParms(code: String) -> (URLString: String, params: [String: AnyObject]) {
let params = ["client_id": Router.clientID, "client_secret": Router.clientSecret, "grant_type": "authorization_code", "redirect_uri": Router.redirectURI, "code": code]
let pathString = "/oauth/access_token"
let urlString = Instagram.Router.baseURLString + pathString
return try (urlString, params as [String : AnyObject])
}
// MARK: URLRequestConvertible
func asURLRequest() throws -> URLRequest {
let result: (path: String, parameters: [String: AnyObject]?) = try {
switch self {
case .PopularPhotos (let userID, let accessToken):
let params = try ["access_token": accessToken]
let pathString = try "/v1/users/" + userID + "/media/recent"
return try (pathString, params as [String : AnyObject]?)
case .requestOauthCode:
let pathString = try "/oauth/authorize/?client_id=" + Router.clientID + "&redirect_uri=" + Router.redirectURI + "&response_type=code"
return try (pathString, nil)
default: break
}
}()
let baseURL = try Router.baseURLString.asURL()
let urlRequest = try URLRequest(url: baseURL.appendingPathComponent(result.path))
return try Alamofire.URLEncoding.default.encode(urlRequest, with: result.parameters)
}
}
}
有谁知道解决这个问题? –