Swift 3.0では、次のthrows関数を使用してURLRequestを生成しました。asURLRequest Alamofire tryエラー
しかし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)
}
}
}
これを解決する方法はありますか? –