2014-11-16 6 views
6

ich die Daten aus dieser URL angezeigt werden soll: http://www.football-data.org/soccerseasons/351/fixtures?timeFrame=n14Wie aus wie etwas anhängen id = 1 zu einem NSMutableURLRequest

Mein baseURL let baseUrl = NSURL(string: "http://www.football-data.org")! ist,

so meine Anfrage ist let request = NSMutableURLRequest(URL: baseUrl.URLByAppendingPathComponent("soccerseasons/" + "\(league.id)" + "/fixtures?timeFrame=n14"))

Aber Die ?timeFrame=n14 funktioniert nicht.

Weiß jemand, wie man das löst, damit ich diese Daten anzeigen kann?

Antwort

14

Das Problem ist, dass die Fragezeichen in ?timeFrame=n14 als Teil der Pfad der URL behandelt wird und daher HTML-escaped als %3F. Dies sollte funktionieren:

let baseUrl = NSURL(string: "http://www.football-data.org")! 
let url = NSURL(string: "soccerseasons/" + "\(league.id)" + "/fixtures?timeFrame=n14", relativeToURL:baseUrl)! 
let request = NSMutableURLRequest(URL: url) 

Alternativ verwenden NSURLComponents, mit dem Sie eine URL bauen sukzessive von einzelnen Komponenten (Fehler der Kürze halber weggelassen Prüfung):

let urlComponents = NSURLComponents(string: "http://www.football-data.org")! 
urlComponents.path = "/soccerseasons/" + "\(league.id)" + "/fixtures" 
urlComponents.query = "timeFrame=n14" 

let url = urlComponents.URL! 
let request = NSMutableURLRequest(URL: url) 

Update für Swift 3:

var urlComponents = URLComponents(string: "http://www.football-data.org")! 
urlComponents.path = "/soccerseasons/" + "\(league.id)" + "/fixtures" 
urlComponents.query = "timeFrame=n14" 

let url = urlComponents.url! 
var request = URLRequest(url: url) 
+0

Ja, das ist die Antwort. Vielen Dank! – STheFox

+0

Danke Martin, das ist großartig –