带有URL内容的字符串?
所以在我下载最近的更新之前,以下代码对我有用:
var g_home_url = String.stringWithContentsOfURL(NSURL(string: url_string), encoding: NSUTF8StringEncoding, error: nil) // Gives me an error: "String.Type does not have a member names stringWithContentsOfUrl"
我很困惑。 在swift中采用以下Objective-c方法的正确方法是什么?
NSString * g_home_url = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:home_url] encoding:NSUTF8StringEncoding error:nil];
使用-initWithContentsOfURL:encoding:error:
instance方法而不是+stringWithContentsOfURL:encoding:error:
class convenience initializer。
var g_home_url = String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding, error: nil)
我不知道类似的方便初始化器现在是否在Swift中不受支持,但它有意义,因为它们只是alloc-init样板的缩写,在Swift中不存在。
对于Swift 3,你必须使用String(contentsOf:encoding:)
。 它抛出。
do { var content = try String(contentsOf:URL(string: "http://your-URI-here")!) } catch let error { // Error handling }
这对我有用:(没有更多错误参数)
var g_home_url = try! String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding)
或者如果你想处理错误:
do { var g_home_url = try String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding) } catch { print(error) }
对于Swift 4,他们改变了字符串编码。 所以现在它会,
do { var g_home_url = try String(contentsOfURL: URL.init(string: url_string)!, encoding: String.Encoding.utf8) } catch { print(error) }
此时(Swift 4.1.2)从Ubuntu linux发送HTTP-get请求的唯一方法是: https : //github.com/dmcyk/SwiftyCurl
import Foundation import SwiftyCurl var request = cURLRequest(url: URL(string: "https://path.to/url/")!, method: .get) let connection = cURLConnection(useSSL: true) do { let res = try connection.request(request) if let body: String = res.body() { print(body) } } catch { prin(error) }