2016-05-25 24 views
0

Diese Frage wurde nicht im Swift-Kontext gestellt. Ich habe einen Socrata Dataset ich mit einer Abfrage wie folgt ein OS X Swift App am Abrufen:Construct URL für Sokrates-Dataset-Abfrage, in der das Datum größer als ein Datum ist

https://data.cityofwestsacramento.org/resource/wdus-j2nt.json?$where=date_applied>=2016-05-01

Es das Problem erscheint, ist die Codierung von "$ where = date_applied> = 2016.05.01" und Socrata mag den scheinbar verschlüsselten Datumsteil nicht.

Haben Sie Ideen, wie Sie die NSURL in Swift erstellen, um diese Abfrage korrekt zu übergeben?

Antwort

1

Die Lösung mit dem Code https://github.com/socrata/soda-swift gefunden. licenseTimeFrame ist nur die Anzahl der Tage, die Sie zurückschauen sollten:

let dateCuttoff = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -licenseTimeFrame,toDate: NSDate(), options: NSCalendarOptions(rawValue: 0)) 
    let unitFlags: NSCalendarUnit = [.Hour, .Day, .Month, .Year] 
    let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: dateCuttoff!) 
    let dateString = "\(components.year)" + "-" + "\(components.month)" + "-" + "\(components.day)" 
    let query = "date_applied>'\(dateString)'" 
    let sk = query.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! as String 
    let url = "https://data.cityofwestsacramento.org/resource/wdus-j2nt.json?$where=\(sk)" 
    let urlToSend = NSURL(string: url) 
    let request = NSMutableURLRequest(URL: urlToSend!); 
    request.addValue("application/json", forHTTPHeaderField:"Accept") 
    request.HTTPMethod = "GET" 
    request.addValue("[myapikey]", forHTTPHeaderField: "X-App-Token") 
    // Execute HTTP Request 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     data, response, error in } 
    // do processing here of return data 
    task.resume() 
+0

Hört sich an, als wären Sie fertig? Tut mir leid, ich habe das nicht früher gesehen. – chrismetcalf

+0

Ja - das würde es jetzt tun – user773881