因此,在我下载最新更新之前,以下代码对我有用:
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];
答案 0 :(得分:19)
使用-initWithContentsOfURL:encoding:error:
实例方法代替+stringWithContentsOfURL:encoding:error:
类便捷初始化程序。
var g_home_url = String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding, error: nil)
我不知道Swift现在是否支持类方便初始化器,但它有意义,因为它们只是alloc-init样板的缩写,在Swift中不存在。
答案 1 :(得分:10)
对于Swift 3,您必须使用String(contentsOf:encoding:)
。它抛出。
do {
var content = try String(contentsOf:URL(string: "http://your-URI-here")!)
}
catch let error {
// Error handling
}
答案 2 :(得分:1)
此时(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)
}
答案 3 :(得分:0)
这对我有用: (没有更多错误参数)
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)
}
答案 4 :(得分:0)
对于Swift 4,他们改变了字符串编码。所以现在就是,
do {
var g_home_url = try String(contentsOfURL: URL.init(string: url_string)!, encoding: String.Encoding.utf8)
}
catch {
print(error)
}