ライブラリ プロジェクトのリクエストにAlamofireを使用しています。
を使用してルートとクエリを処理しようとしてenum Router: URLRequestConvertible
いますが、一度だけ設定する必要があるパラメーターと、デフォルト値を設定する必要があるパラメーターがあり、それらを処理する方法がわかりません。
サンプルコード
これは私がこれまでに持っているものです:
私のResultFromat
列挙型
/// Available result formats
enum ResultFormat: String {
case XML = "xml"
case JSON = "json"
}
私のRouter
列挙型
ここには、固定されていて作成時に設定する必要がある 1 つのパラメーター ( apiId
) と、既定値を持つがメソッドresFormat
を機能させるために管理しないパラメーター ( ) がありますinit
。
enum Router: URLRequestConvertible {
static let API_BASE = "http://sbslocal/api2/"
/// API ID to use in the API calls
static let apiId : String
/// Format to receive the response
static var resFormat = ResultFormat.JSON
// MARK: - Enum initialzer
init(apiID: String) {
Router.apiId = apiID
}
case Search(query: String)
case ViewDetail(id: Int)
// ... the rest of the cases ...
// MARK: URLRequestConvertible
var URLRequest: NSURLRequest {
let (path: String, parameters: [String: AnyObject]?) = {
/// Set the basic URL paameters
var params = ["apiID": Router.API_ID, "format": Router.RESULT_FORMAT.rawValue]
switch self {
case .Search(let query):
// Add the specific parameters for this case (i.e. query)
params["query"] = query
return ("/search", params)
// ... the rest fo the cases
}
}()
let URL = NSURL(string: Router.API_BASE)!
let URLRequest = NSURLRequest(URL: URL.URLByAppendingPathComponent(path))
let encoding = Alamofire.ParameterEncoding.URL
return encoding.encode(URLRequest, parameters: parameters).0
}
}
初期化のさまざまな可能性を確認しましたが、どれも機能していないようです。どんな助けでも感謝します。