NSURLComponents 构建没有 // 的方案

NSURLComponents builds scheme without //

我正在尝试创建一个 URL 方案来以这种方式打开 Tweetbot 应用程序。

var urlComponents = NSURLComponents()
urlComponents.scheme = "tweetbot"
urlComponents.path = "BalestraPatrick/user_profile/\(user)"

我的预期结果是: tweetbot://BalestraPatrick/user_profile/username

结果是:tweetbot:BalestraPatrick/user_profile/username

// 不会自动添加。如果我尝试将字符添加到方案或路径中,URL 变为 nil。

有解决方法吗?

如果您不指定 host// 将不会出现。我认为理想的解决方案是:

let user = "test"

var urlComponents = NSURLComponents()
urlComponents.scheme = "tweetbot"
urlComponents.host = "BalestraPatrick"
urlComponents.path = "/user_profile/\(user)"

print("URL: \(urlComponents.string!)") // URL: tweetbot://BalestraPatrick/user_profile/test

根据 http://tapbots.net/tweetbot3/support/url-schemes/,tweetbot URL 方案的形式为 tweetbot://<screenname>/<other_stuff>

所以tweetbot是URL的scheme,<screenname>是URL的host,/<other_stuff>是URL的路径和查询。

所以,Sulthan 的回答中的代码是绝对正确的(而且不是 hacky)。