2016-09-25 4 views
0

현재 cocoapods 1.1.0.rc.2를 사용하고 있습니다. Alamofire 포드를 설치했습니다. 1.1.0.rc.2 버전에서는 swift 3.0에서도 작동합니다. 그러나 나는 다음과 같은 열거 형이를 구축 할 때 나는 다음과 같은 오류가 발생하지만enum 라우터 선언 Alamofire swift 3.0

enum Router: URLRequestConvertible { 
     static let baseURLString = "https://api.instagram.com" 
     static let clientID = "myID" 
     static let redirectURI = "http://www.example.com/" 
     static let clientSecret = "mySecret" 

     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 (urlString, params as [String : AnyObject]) 
     } 

     // MARK: URLRequestConvertible 

     var URLRequest: NSMutableURLRequest { 
      let result: (path: String, parameters: [String: AnyObject]?) = { 
       switch self { 
       case .PopularPhotos (let userID, let accessToken): 
        let params = ["access_token": accessToken] 
        let pathString = "/v1/users/" + userID + "/media/recent" 
        return (pathString, params as [String : AnyObject]?) 

       case .requestOauthCode: 
        let pathString = "/oauth/authorize/?client_id=" + Router.clientID + "&redirect_uri=" + Router.redirectURI + "&response_type=code" 
        return (pathString, nil) 
       } 
      }() 

      let baseURL = NSURL(string: Router.baseURLString)! 
      let URLRequest = NSURLRequest(url: NSURL(string: result.path ,relativeTo:baseURL as URL)! as URL) 
      let encoding = Alamofire.ParameterEncoding.encode(baseURL as! ParameterEncoding) 
      //let encoding = Alamofire.ParameterEncoding.URL 
      return encoding.encode(URLRequest, parameters: result.parameters).0 
     } 
    } 

을 선언하기 위해 노력하고있어.

Type 'Router' does not conform to protocol 'URLRequestConvertible' 

내가 여기에없는 것을 아는 사람이 있습니까?

+0

동일한 문제가 발생합니다. 이것에 대한 해결책을 찾았습니까? 감사합니다 –

+0

@ravisendhav 아니요 아직 불행히도 아무것도 발견하지 못했습니다 – NoSixties

+0

당신은 내 아래 게시물 에서이 솔루션을 확인할 수 있습니다. –

답변

1
enum Router: URLRequestConvertible { 

    static let baseURLString = "www.google.com" 


    case getToken([String: AnyObject]) 

    var method: HTTPMethod { 

     switch self { 
     case .getToken: 
      return .post 
     default: 
      break 

     } 
    } 

    var path: String { 
     switch self { 
     case .getToken: 
      return "token" 
     default: 
      break 
     } 
    } 


    func asURLRequest() throws -> URLRequest { 

     let url = Foundation.URL(string: baseURLString)! 

     var urlRequest = URLRequest(url: url.appendingPathComponent(path)) 
     urlRequest.httpMethod = method.rawValue 


     urlRequest.setValue("application/json", forHTTPHeaderField: "Content") 
     urlRequest.setValue("keep-alive", forHTTPHeaderField: "Connection") 

     switch self { 
     case .getToken(let parameters): 
      urlRequest = try URLEncoding.default.encode(urlRequest, with: parameters) 
     default: 
      break 
     } 
     return urlRequest 

    } 
}