2015-12-03 8 views
5

Ich benutze AFNetworking in meiner iOS-App und für alle GET-Anfragen, die es macht, baue ich die URL von einer Basis-URL und als Parameter mit NSDictionary Key-Value-Paare hinzufügen.Wie kann ich eine URL mit Abfrageparametern erstellen, die mehrere Werte für denselben Schlüssel in swift enthalten?

Das Problem ist, dass ich denselben Schlüssel für verschiedene Werte brauche. Hier

ist ein Beispiel dafür, was ich brauche die schließlich URL aussehen -

http://example.com/.....&id=21212&id=21212&id=33232

Es ist nicht möglich, in NSDictionary auf unterschiedliche Werte in gleichen Schlüssel zu haben. Also habe ich NSSet ausprobiert, aber nicht funktioniert.

let productIDSet: Set = [prodIDArray] 
let paramDict = NSMutableDictionary() 
paramDict.setObject(productIDSet, forKey: "id") 

Kann mir bitte jemand helfen?

Antwort

16

Alles, was Sie brauchen, ist NSURLComponents. Die Grundidee besteht darin, eine Reihe von Abfrageelementen für Ihre IDs zu erstellen. Hier ist Code, den Sie in einen Spielplatz einfügen können:

import UIKit 
import XCPlayground 

let queryItems = [NSURLQueryItem(name: "id", value: "2121"), NSURLQueryItem(name: "id", value: "3232")] 
let urlComps = NSURLComponents(string: "www.apple.com/help")! 
urlComps.queryItems = queryItems 
let URL = urlComps.URL! 
XCPlaygroundPage.currentPage.captureValue(URL.absoluteString, withIdentifier: "URL") 

Sie sollten eine Ausgabe von

www.apple.com/help?id=2121 & id = 3232

+0

Ehrfürchtig. Danke für deine Antwort. Ich habe versucht, den Wert in einer for-Schleife durchzuschleifen und hinzuzufügen, da ich meine IDs in einem Array habe, aber ich habe viele Probleme. Können Sie mir bitte vorschlagen, wie ich Werte in Schleife hinzufügen? Danke vielmals. – AbhishekDwivedi

+0

sicher, stellen Sie einfach sicher, dass Sie Ihr Array von 'queryItems' als 'var' deklarieren und dann können Sie neue Elemente in einer Schleife hinzufügen @AbhishekDwivedi –

+0

Sorry @Daniel Sie zu Bug aber das ist, was ich versuche zu tun, aber nicht in der Lage zu. Nicht sicher, was das Problem ist :( var queryItems = [NSURLQueryItem]() let urlComps = NSURLComponents (string: "www.apple.com/help")! für var i = 0; i AbhishekDwivedi

-1

Ich denke, u müssen nur so etwas tun:

let params = ["id" : [1, 2, 3, 4], ...]; 

, die in codiert werden wird: .... id% 5B% 5D = 1 & id% 5B% 5D = 2 & id % 5B% 5D = 3 & ID% 5B% 5D = 4 ....

+0

sehen And If Sie arbeiten mit swift Ich sage Ihnen, dass Sie [Alamofire] (https://github.com/Alamofire/Alamofire) verwenden können –