Строка с содержимым Url 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"

Я смущен. Каков наилучший способ ускорить следующий метод objective-c?

NSString * g_home_url = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:home_url] encoding:NSUTF8StringEncoding error:nil];

Ответ 1

Используйте метод экземпляра -initWithContentsOfURL:encoding:error: вместо инициализатора удобства +stringWithContentsOfURL:encoding:error:.

var g_home_url = String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding, error: nil)

Я понятия не имею, если инициализаторы удобства классов теперь не поддерживаются в Swift, но это имеет смысл, поскольку они были просто сокращенными для шаблона alloc-init, который не существует в Swift.

Ответ 2

Для Swift 3 вам нужно будет использовать String(contentsOf:encoding:). Он бросает.

do {
    var content = try String(contentsOf:URL(string: "http://your-URI-here")!)
}
catch let error {
    // Error handling
}

Ответ 3

Вот что это сработало для меня: (Нет аргумента ошибки)

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