%2C 变成 %2525252C - swift

问题描述 投票:0回答:1

我正在使用

NSURLComponents
为 Swift 中的 API 调用生成 URL:

func generateSearchByLocaleURL(lat: Int, lon: Int) -> String {
var components = NSURLComponents()

let bbox = generateBboxValue(lat, lon)

components.scheme = "https"
components.host = "api.flickr.com"
components.path = "/services/rest/"
components.queryItems = [
    NSURLQueryItem(name: "method", value: "flickr.photos.search"),
    NSURLQueryItem(name: "api_key", value: "KEY_VALUE"),
    NSURLQueryItem(name: "bbox", value: bbox),
    NSURLQueryItem(name: "extras", value: "url_m"),
    NSURLQueryItem(name: "format", value: "json"),
    NSURLQueryItem(name: "nojsoncallback", value: "1")
]

let url = components.string

    return url!
}

我有一个辅助方法,可以根据屏幕上两个名为

NSURLQueryItem
:
 的文本字段的输入来确定要在 
generateBboxValue()

对象之一中使用的字符串
func generateBboxValue(lat: Int, lon: Int) -> String {
    
    let lat1 = lat - 1
    let lat2 = lat + 1
    let lon1 = lon - 1
    let lon2 = lon + 1
    
    let bbox = "\(lat1)&2C"+"\(lat2)%2C"+"\(lon1)%2C"+"\(lon2)"
    
    return bbox
}

generateSearchByLocaleURL(20, 25)

正如您所看到的,字符串中有一个逗号(,),当它输入到

NSURLComponents
时,我需要将其生成为%2C。但是,当我打印从
NSURLComponents.string
返回的字符串时,我得到:

"https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=KEY_VALUE&bbox=19%262C21%252C24%252C26&extras=url_m&format=json&nojsoncallback=1"

如果您会注意到“bbox”键/值部分正在返回:

bbox=19%262C21%252C24%252C26

在这种情况下我如何只返回 %2C?这导致我无法成功进行任何 API 调用,我正在用头撞墙。

ios swift nsurl
1个回答
0
投票

只需执行

let bbox = "\(lat1),\(lat2),\(lon1),\(lon2)"
,这样当它变成 URL 时,逗号就会转换为 %2C。我删除了
+
,因为你根本不需要它,你可以将它们串成一串。

© www.soinside.com 2019 - 2024. All rights reserved.