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