Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 包含URL内容的字符串?_Ios_Swift - Fatal编程技术网

Ios 包含URL内容的字符串?

Ios 包含URL内容的字符串?,ios,swift,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中采用以下

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

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:
实例方法,而不是
+stringWithContentsOfURL:encoding:error:
类初始值设定项

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

我不知道现在Swift中是否不支持类便利初始值设定项,但这是有道理的,因为它们只是Swift中不存在的alloc init样板的缩写。

下面是它对我的作用: (不再有错误参数)

或者,如果要处理错误:

do {
  var g_home_url = try String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding)
}
catch {
   print(error)
}

对于Swift 3,您必须使用
字符串(contentsOf:encoding:)
。它抛出

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

对于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请求的唯一方法是:


initWithContentsOfURL
stringWithContentsOfURL
映射到同一个Swift方法,在这种情况下,似乎只能从Swift调用init方法。描述类似的问题。
contentsOfURL
将获取该url的响应。我不知道原因是什么。我现在使用引号语法来转换它
do{let ipAddress=try String(contentsOf:url,encoding:String.encoding.utf8)}catch{print(error)}
此解决方案不适用于使用Swift 4.1.1的Linux。字符串(contentsOf:url)返回nothing@SergeyDi我遇到了同样的问题。。。我也检查过了,但还没有更新。你有什么解决办法吗?@5t111111只能使用swift 3.x。但是在3.x版本的字符串(contents)上也有一个问题。每次调用它时,都会创建/tmp/someName.tmp文件。
do {
  var g_home_url = try String(contentsOfURL: URL.init(string: url_string)!, encoding: String.Encoding.utf8)
}
catch {
   print(error)
}
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)
}