How to prepend url with http:// using stringWithFormat in Swift

雨燕双飞 提交于 2020-01-10 20:58:11

问题


I'm building a custom browser using UIWebView.

Use case: User enters "www.abc.com" into the address bar. Error below thrown:

Error Domain=WebKitErrorDomain Code=102 "Frame load interrupted" UserInfo=0x19860770 {NSErrorFailingURLKey=file://www.abc.com, NSErrorFailingURLStringKey=file://www.abc.com, NSLocalizedDescription=Frame load interrupted}

Reason: the URL needs to be prepended with "http://"

I would like to use the stringWithFormat method of NSString, but I can't seem to get the syntax correct. In Objective-C, we have;

NSString* modifiedURLString = [NSString stringWithFormat:@"http://%@", urlString];

In Swift, the method is not there?!

var modifiedURLString: String = String(`stringWithFormat not here?!...`)

I then tried mixing Objective C with Swift:

var modifiedURLString: NSString = [NSString stringWithFormat not here?!...

Then I tried straight-up Objective-C:

NSString* modifiedURLString = [NSString stringWithFormat:@"http://", urlString];

Thank you for your help. Sincerely, Keith


回答1:


The equivalent of NSString's formatWithString: is just "format:", as shown below, but there is no real need to do that for the example you have given. Just append strings, or use interpolation...

let urlString = "www.abc.com"
var modifiedURLString = NSString(format:"http://%@", urlString) as String
// or just
modifiedURLString = String(format:"http://%@", urlString)
// or
let simpler = "http://" + urlString
// or use string interplotaion
let simplest = "http://\(urlString)"



回答2:


Just for the sake of being complete here (though of a 4th way), here are your options:

1: Swift way of using NSString's stringWithFormat:

let url = NSString(format: "http://%@", aSuffix)

2: Take advantage of Swift's ability concatenate strings with the "+" operator.

let url = "http://" + aSuffix

3: Use NSString's stringByAppendingString() method.

let url = "http://"
url.stringByAppendingString(aSuffix)

4: String interpolation.

let url = "http://\(aSuffix)"



回答3:


You can use string interpolation:

let site = "www.abc.com"
let url = "http://\(site)"


来源:https://stackoverflow.com/questions/24247263/how-to-prepend-url-with-http-using-stringwithformat-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!