2016-11-15 44 views
2

我想在swift 3中构造一个url,但我不明白为什么它不会将字符串附加到baseURL正确的输出不是我所期望的。在swift 2中,它工作正常。如何在swift 3中使用URL构造url(string:,relativeTo :)

let token = "12token34" 

let baseURL = URL(string: "https://api.mysite.net/map/\(token)/") 

let desiredURL = URL(string: "37.8267,-122.4233", relativeTo: baseURL as URL?) 

结果

37.8267,-122.4233 -- https://api.mysite.net/map/12token34/ 

我期待下面:

https://api.mysite.net/map/12token34/37.8267,-122.4233 
+1

你的方法,它正在它只是不会打印像您期望 –

+1

试'print(desiredURL?.absoluteString)' –

+1

注意:不需要将URL转换为URL? –

回答

1
let token = "12token34" 
let baseURL = URL(string: "https://api.mysite.net/map/\(token)/") 
let desiredURL = URL(string: "37.8267,-122.4233", relativeTo: baseURL as URL?) 

这是错误的原因:

/// Initialize with string, relative to another URL. 
/// 
/// Returns `nil` if a `URL` cannot be formed with the string (for example, if the string contains characters that are illegal in a URL, or is an empty string). 
public init?(string: String, relativeTo url: URL?) 

所以,如果你想添加的url,输出应该是这样的:

let output = URL(string: baseURL!.absoluteString) 
output?.appendingPathComponent("37.8267,-122.4233") 

这样你就可以直接使用:

baseURL!.appendingPathComponent("37.8267,-122.4233") 
+0

,我已经用于打印操场,实际答案是最后一行。 –