0

I'm trying to migrate code from Swift 3.2 to Swift 4.2. When put in Xcode 10.1 I get this error.'Unable to infer closure type in the current context '. This is using YALAPIClient. Please help.

Unable to infer closure type in the current context This I found on stack overflow. But I'm not using any try method here.Please help.

private func presentIndustrySearch() {
    let dataProvider = RequestDataProvider { return IndustriesRequest() } /*error comes here*/
}

public class RequestDataProvider<Representation, Request>: DataProvider, NetworkClientInjectable     
where
Request: SerializeableAPIRequest,
Request.Parser.Representation == [Representation]
{
    public typealias Item = Representation
    public typealias RequestConstructor = () -> Request

    public private(set) var data = [Item]()
    private let requestConstructor: RequestConstructor

    public init(_ requestConstructor: @escaping RequestConstructor) {
      self.requestConstructor = requestConstructor
    }

    public func loadData(before: () -> Void, after: @escaping (Error?) -> Void) {
       let request: Request = self.requestConstructor()

       before()

       networkClient.execute(request: request, parser: request.parser, completion: { [weak self] task in
          guard let `self` = self else { return }

          if let data = task.value, data.count != 0 {
            self.data.append(contentsOf: data)
            after(nil)
          } else if let error = task.error {
            after(error as NSError)
          } else {
            let error = NSError.reachedEndOfPage()
            after(error)
        }
       })
    }
}
public protocol SerializeableAPIRequest: APIRequest {

   associatedtype Parser: ResponseParser

   var parser: Parser { get }

}

public struct IndustriesRequest: SerializeableAPIRequest, TokenizedAPIRequest, StubAPIRequest {

    public private(set) var method = APIRequestMethod.get
    public private(set) var path = "industries"
    public private(set) var parser = KeyPathMappableArrayParser<[Industry]>(keyPath: "data")
    public private(set) var parameters: [String: String]? = [:]
    public private(set) var authenticationTokenRequired = true

    public init(value: String = "") {
      parameters!["term"] = value
    }
}

0 Answers0