带有URL内容的字符串?

时间:2014-10-23 15:50:17

标签: ios swift

因此,在我下载最新更新之前,以下代码对我有用:

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];

5 个答案:

答案 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)
}