2017-02-09 50 views
2

Имея простую конечную точку перечисления, как:Swift: создание URL из строки по отношению к базовому URL

enum TraccarEndpoint: Endpoint { 

    case server 

    var baseURL: URL { 
     return URL(string: "http://demo.traccar.org/api")! 
    } 

    var path: String { 
     switch self { 
     case .server: 
      return "/server" 
     } 
    } 

    var url: URL { 
     let path = self.path 
     let baseURL = self.baseURL 
     let url = URL(string: path, relativeTo: baseURL) 
     return url! 
    } 
} 

ожидая self.url = "http://demo.traccar.org/server", но self.url = «/ сервер - TTP: // www.traccar.org/api». Что это?

+1

вы можете упростить вашу собственность URL-адрес ' var url: URL {return URL (строка: путь, relativeTo: baseURL)! } 'Также не нужно включать косую черту в строку сервера' return 'server' ' –

ответ

3

Это способ описания URL-адреса. Ваш адрес правильный, не волнуйтесь. Печать url.absoluteString убедить себя

Вы можете получить абсолютный URL с url.absoluteURL

+0

Не совсем, маленькая косая черта имела огромное значение. Когда косая черта ('/ server') находилась в компоненте пути, я получил ошибку (используя параметр url как URLConvertible в вызове Alamofire.request, НО, когда я включил эту косую черту в baseURL и удалил ее с пути, все работает! – zzheads

+0

И в обоих случаях (Успех и неудача) url.absoluteString был таким же ... – zzheads

0

ну, я скопировать код

enum TraccarEndpoint { 

    case server 

    var baseURL: URL { 
     return URL(string: "http://demo.traccar.org/api")! 
    } 

    var path: String { 
     switch self { 
     case .server: 
      return "/server" 
     } 
    } 

    var url: URL { 
     let path = self.path 
     let baseURL = self.baseURL 
     let url = URL(string: path, relativeTo: baseURL) 
     return url! 
    } 
} 

Строка URL является/сервер - http://demo.traccar.org/api.

Другое дело, что TraccarEndpoint не наследует конечную точку. Есть ли в базе данных у продукта "STARTNEWS" значение "http://www.traccar.org/api"? Адрес электронной почты: Method Dispatch in Swift Факс:

Факс:

Это может помочь вам узнать о методе Отправка о быстром.

0

Я нашел решение, перемещающим / от пути к BaseUrl:

http://demo.traccar.org/api/ 

вместо

http://demo.traccar.org/api 

и: server вместо /server