2015-06-12 3 views
0

Я пытаюсь помочь помощникам Alamofire для работы с моим сервером. Я создаю маршрутизатор для обработки конечных точек API. Мне кажется, что сама конструкция кажется мне понятной, но я борюсь с синтаксисом SWIFT.String не конвертируется в String: AnyObject

enum Router:URLRequestConvertible { 
    static let baseURLString = "url" 

    case AEDS 

    var URLRequest: NSURLRequest { 
     let (path: String, parameters: [String: AnyObject]) = { 
      switch self { 
      case .AEDS: 
       let params = [""] 
       return("/aeds", 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 
    } 

} 

Я получаю сообщение, что в моем случае .AEDs в PARAMS бросают ошибку: [String] не конвертируется в [String: AnyObject]

Я вроде нового Свифта и мог пока не выясните, с чего начать. Я думаю, что я представил массив, который я определяю. Итак, что означает эта ошибка?

ответ

1

В вашем случае коммутатора вам необходимо определить params как словарь, а не как массив.

switch self { 
     case .AEDS: 
      let params = [""] <---- This is initialising an array containing a string 
      return("/aeds", params) 
     } 

Try изменения в:

switch self { 
      case .AEDS: 
       let params = ["" : ""] <---- This will create a dict 
       return("/aeds", params) 
      } 

Это должно решить вашу проблему.

+0

Вау ... Я полностью неверно истолковал выражение String: AnyObject. Конечно, это словарь! Спасибо, nshebbar! – sesc360