1. ホーム
  2. ios

Swiftで同じキーの複数の値を含むクエリパラメータを持つURLを構築する方法は?

2023-11-07 10:11:13

質問

iOSアプリでAFNetworkingを使用していますが、GETリクエストのために、ベースURLからurlを構築し、NSDictionary Key-Value ペアを使用してパラメータを追加しています。

問題は、異なる値に対して同じキーが必要なことです。

最終的にどのようなURLにする必要があるのか、その例を示します。

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

NSDictionaryでは、同じキーに異なる値を入れることはできません。そこで、NSSetを試してみましたが、うまくいきませんでした。

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

どのように解決するのですか?

必要なのは URLComponents (Obj-CではNSURLComponents)です。基本的な考え方は、idのクエリ項目の束を作成することです。以下は、プレイグラウンドに貼り付けることのできるコードです。

import Foundation
import XCPlayground

let queryItems = [URLQueryItem(name: "id", value: "1"), URLQueryItem(name: "id", value: "2")]
var urlComps = URLComponents(string: "www.apple.com/help")!
urlComps.queryItems = queryItems
let result = urlComps.url!
print(result)

という出力が表示されるはずです。

www.apple.com/help?id=1&id=2