Search code examples
iosjsonswiftobjectswift4.1

How to get the value of url parameter using swift 4.1


I am trying to get parameters for urls and I try to get only the date not time the URL.

http://aa.no-ip.biz:8001/hf_tracker/api/history.php?accesskey=12345&Vehilce=1618&FromDate=2018-05-10 13:11&ToDate=2018-05-14 12:11

Code:

extension URL {
    func valueOf(_ queryParameterName: String) -> String? { 
        guard let url = URLComponents(string: self.absoluteString) else { 
              return nil 
        } 

        return url.queryItems?.first(where: { $0.name == queryParameterName})?.value 
    } 
}
    
    let newURL = URL(string: "assetlinkasia.no-ip.biz:8001/hf_tracker/api/…)! 
    newURL.valueOf("toDate") 
    newURL.valueOf("fromDate") 

How can I only get the date and not time?


Solution

  • This is the way you can do it,

    Your URL extension here, from here

    extension URL {
        func valueOf(_ queryParamaterName: String) -> String? {
            guard let url = URLComponents(string: self.absoluteString) else { return nil }
            return url.queryItems?.first(where: { $0.name == queryParamaterName })?.value
        }
    }
    

    Your code goes here,

    let string = "http://aa.no-ip.biz:8001/hf_tracker/api/history.php?accesskey=12345&Vehilce=1618&FromDate=2018-05-10 13:11&ToDate=2018-05-14 12:11"
    let test = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
    let url = URL(string: test!)!
    let fromDate = url.valueOf("FromDate")
    let toDate = url.valueOf("ToDate")
    
    let date1 = fromDate?.components(separatedBy: " ").first
    print(date1)
    
    let date2 = toDate?.components(separatedBy: " ").first
    print(date2 )
    

    Output will be below,

    2018-05-10
    2018-05-14