2017-11-15 60 views
5
private func makeRequest<T where T:MappableNetwork>(method method: Alamofire.Method, url: String, 
         parameters: [String: AnyObject]?, keyPath: String, handler: NetworkHandler<T>.handlerArray) -> Request { 

    let headers = [ 
     "Authorization": "", 
     ] 

    return Alamofire 
     .request(method, url, parameters: parameters, encoding: .URL, headers: headers) 
     .validate() 
     .responseArray(keyPath: keyPath) { (response: Alamofire.Response<[T], NSError>) in 
      if let error = response.result.error { 
       if let data = response.data { 
        let error = self.getError(data) 
        if error != nil { 
         handler(.Error(error: error!)) 
         return 
        } 
       } 
       handler(.Error(error: error)) 
      } else if let objects = response.result.value { 
       handler(.Success(data: objects)) 
      } 
    } 
} 

Konwertowałem kod szybki 2.x na 3.x i otrzymuję błąd Wyrażenie typu jest niejednoznaczne bez większej ilości kontekstów.Swift 3.0: Typ wyrażeń jest niejednoznaczny bez kontekstu?

enter image description here

+0

Czego spodziewa się przewodnik? Zaczynasz z kropką (.) I nie można tego ustalić automatycznie w tym przypadku, co powinno być przed okresem? – Yitzchak

+0

ok Mam twój punkt widzenia. spróbuj tego. dzięki @Yitzchak –

+0

Czy to zadziałało? Czy mogę opublikować odpowiedź? Udostępnić nam dokładnie to, czego brakowało? – Yitzchak

Odpowiedz

1

Błąd wspomniał Pan mówi, że kompilator nie może określić dokładny typ wartości wprowadzonego.

Zacząłeś od kropki, coś musi być przed okresem. Czasami kompilator może zrozumieć bez twojej pomocy. Nie w tym przypadku, ma kilka opcji, więc jest niejednoznaczna i prosi o dokładne podanie nazwy klasy, którą miałeś na myśli.

Pomoże to innym, jeśli podasz dokładną nazwę klasy, której brakowało.