2014-11-16 22 views
6

Tôi muốn hiển thị dữ liệu từ URL này: http://www.football-data.org/soccerseasons/351/fixtures?timeFrame=n14Làm thế nào để thêm một cái gì đó giống như id = 1 để một NSMutableURLRequest

baseurl tôi là let baseUrl = NSURL(string: "http://www.football-data.org")!,

có yêu cầu của tôi là let request = NSMutableURLRequest(URL: baseUrl.URLByAppendingPathComponent("soccerseasons/" + "\(league.id)" + "/fixtures?timeFrame=n14"))

Nhưng ?timeFrame=n14 không hoạt động.

Bất kỳ ai biết cách giải quyết vấn đề này để tôi có thể hiển thị dữ liệu đó?

Trả lời

14

Vấn đề là dấu hỏi trong ?timeFrame=n14 được coi là một phần của con đường của URL và do đó HTML thoát như %3F. Điều này sẽ làm việc:

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) 

Ngoài ra, sử dụng NSURLComponents, cho phép bạn xây dựng một URL liên tiếp từ thành phần riêng lẻ (kiểm tra lỗi bỏ qua cho ngắn gọn):

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) 

Cập nhật cho 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

Vâng, đó là câu trả lời. Cảm ơn nhiều! – STheFox

+0

Cảm ơn Martin, điều này thật tuyệt –

Các vấn đề liên quan