2016-04-11 30 views
0

Talep edeceğim API web sitesi yalnızca istek başına 50 öğeyi işleyebilir (bu arada 5001 olan tüm verilere ihtiyacım var) 101 farklı (ancak benzer) URL'den ayrıştırmayı etkinleştirebilen özel karakterler içeren bir URL oluşturmanın yolu nedir? (Bu '(dize: Int)' değerini derleme olamaz diyor (farklar her URL arkasında olduğunu atlama sayısı değiştirilmesi gerekir ve hepsi bu) beklenen bir argüman türü StringJSON verileri 100 farklı ancak benzer URL'den nasıl alınır

func fetchDataForNearbyStops(completionHandler : ([Nearby]?, String?) ->()){ 

    let requestURLStr = "http://datamall2.mytransport.sg/ltaodataservice/BusStops?$skip=" 
    let requestURL = NSURL(string: requestURLStr) 
     let reqNum : Int = 0 
     let reqURLStr = requestURLStr + (String: reqNum) 
    let request : NSMutableURLRequest = NSMutableURLRequest() 
    request.URL = reqURL 
    request.HTTPMethod = Cara 
    request.addValue(AccKey, forHTTPHeaderField: AccKeyField) 
    request.addValue(UniqueUID, forHTTPHeaderField: UniqueUIDField) 
    request.addValue(CustomHeader, forHTTPHeaderField: CustomHeaderField) 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in 
      print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
     do { 
     if let JSONDataArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] { 
      print(JSONDataArray) 
      } 
     } catch { 
     } 
     } 
     task.resume() 
    NSOperationQueue.mainQueue().addOperationWithBlock {() -> Void in 
     completionHandler(nil, nil) 
    } 
} 
+0

URL dizisini şu ana kadar nasıl değiştirmeyi denediniz? ne yanlış gitti ? – Wain

+0

URL'yi bir dize olarak oluşturmaya çalıştım ve sayı olarak girilebilecek bir int olarak girilebiliyordu ama bu çalışmayı göremiyorum @Wain –

+0

bu kodu göster, derleme/çalışma zamanı hatasını göster – Wain

cevap

1

içine Sizin kod çok yakın, temelde sadece numarası ile bir String örneğini oluşturmak gerekiyor ... yanlış yerde

let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip="; 
let reqNum : Int = 0 

let reqURLStr = requestURLStr + String(reqNum) 

bir braket koydu. Daha sonra kaç sayfalarını kontrol etmenizi 2 işlevleri, 1 kullanmalıdır istek ve istek göndermek için:

func sendRequests() { 
    for page in 0...10 { 
     sendPageRequest(page) 
    } 
} 

func sendPageRequest(page: Int) { 
    let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip="; 
    let reqURLStr = requestURLStr + String(page) 

    ... 
+0

Çekirdek verilere yazarken tamsayı katma değerin nasıl yapılacağı konusunda bana daha fazla bilgi verebilir misiniz? –

+0

teşekkürler, birden çok URL nasıl oluşturulur? "reqNum" öğesini bir func üzerinde bir parametre olarak eklemeniz ve bu func'i birden çok kez çağırmanız gerekir. Yine de, func istekleri bir sıraya ekleyebilmeli, böylece sadece bir seferde birkaç tane yürütürsünüz (veya ana makineye istekleri sınırlamak için oturumu yapılandırabilirsiniz) – Wain

+0

Evet, farklı URL'den birden fazla veri nasıl elde edileceğine işaret ediyorum Tek bir işlev için ... Çok üzgünüm ama hala hızlıca yeniyim, nasıl yapılacağını bana gösterebilir misin? Zaten tüm fonksiyon göz önüne alındığında zaten ... Teşekkürler anyway @Wain –