El tipo no cumple con el protocolo 'URLRequestConvertible' con Alamofire

Aquí está el código:

enum Router: URLRequestConvertible { //Error: Type 'Five100px.Router' does not conform to protocol 'URLRequestConvertible' static let baseURLString = "https://api.500px.com/v1" static let consumerKey = "MY_KEY" case PopularPhotos(Int) case PhotoInfo(Int, ImageSize) case Comments(Int, Int) var URLRequest: NSURLRequest { let (path, parameters) : (String, [String: AnyObject]) = { switch self { case .PopularPhotos(let page): let params = ["consumer_key": Router.consumerKey, "page": "\(page)", "feature": "popular", "rpp": "50", "include_store": "store_download", "include_status": "votes"] return ("/phtos", params) case .PhotoInfo(let photoID, let ImageSize): var params = ["consumer_key": Router.consumerKey, "image_size": "\(ImageSize.rawValue)"] return ("/photos/\(photoID)", params) case .Comments(let photoID, let commentsPage): var params = ["consumer_key": Router.consumerKey, "comments": "1", "comments_page": "\(commentsPage)"] return ("/photos/\(photoID)/comments", params) } }() let URL = NSURL(string: Router.baseURLString) let URLRequest = NSURLRequest(URL: URL!.URLByAppendingPathComponent(path)) let encoding = Alamofire.ParameterEncoding.URL return encoding.encode(URLRequest, parameters: parameters).0 } } 

Importé Alamofire y agregué este código, luego viene el error. Escribí este código según el tutorial de raywenderlich: http://www.raywenderlich.com/85080/beginning-alamofire-tutorial , que está escrito en Swift 1.2 mientras uso Swift 2.

NSMutableURLRequest devolver una NSMutableURLRequest en la propiedad URLRequest lugar de una NSURLRequest . Eso solucionará el error.


Actualizar

En Swift 3 y Alamofire 4, debe devolver una URLRequest del nuevo método asURLRequest() . Para get más detalles, consulte nuestros ejemplos de LÉAME mucho más detallados.

La respuesta de @ cnoon funciona para la versión 3, pero si usa la versión 4+ de Alamofire, deberá implementar:

func asURLRequest() throws -> URLRequest