Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
NSURLConnection在更新到Swift 2.0后抛出_Swift_Try Catch_Nsurlconnection - Fatal编程技术网

NSURLConnection在更新到Swift 2.0后抛出

NSURLConnection在更新到Swift 2.0后抛出,swift,try-catch,nsurlconnection,Swift,Try Catch,Nsurlconnection,在Swift 2.0更新之前,这段代码使用PHP脚本从服务器下载我的JSON文件非常有效: let url = NSURL(string: webAdress) let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 5

在Swift 2.0更新之前,这段代码使用PHP脚本从服务器下载我的JSON文件非常有效:

let url = NSURL(string: webAdress)
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 5.0)

var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
更新之后,Xcode要求我做一些更改。我做了,代码没有错误,但它总是抛出

    let url = NSURL(string: webAdress)
    let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
    let request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 5.0)

    var response: NSURLResponse? = nil
    var reply = NSData()
    do {
    reply = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response)
    } catch {
        print("ERROR")
    }

期待您的解决方案

下面是一个使用新NSURLSession的示例-显然,iOS 9中不推荐使用NSURLConnection

let url = NSURL(string: webAddress)
let request = NSURLRequest(URL: url!, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 5.0)

let session = NSURLSession.sharedSession()

session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
    print(data)
    print(response)
    print(error)
})?.resume()
我认为它非常干净,只是没有太多的文档。如果您有任何问题,请告诉我。

马西米兰您好, 我也有同样的未解决的问题,Sidetalker使用NSURLSession.dataTaskWithRequest提出的解决方案不是您想要的,因为NSURLSession API是高度异步的(根据苹果文档),并且您在swift 1.2中实现的代码是同步的。 另一方面,iOS 9中不推荐使用NSURLConnection,因此您编写的代码可能没有生成,对吗

我建议的解决办法是:

let url = NSURL(string: webAdress)
let request: NSURLRequest = NSURLRequest(URL: url!)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
var responseCode = -1
let group = dispatch_group_create()
dispatch_group_enter(group)
session.dataTaskWithRequest(request, completionHandler: {(_, response, _) in
if let httpResponse = response as? NSHTTPURLResponse {
    responseCode = httpResponse.statusCode
}
dispatch_group_leave(group)
})!.resume()
dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
//rest of your code...

请告诉我现在是否可以打印错误??你可以直接在catch.print(error)中找到它——无需声明错误变量(只需为你澄清)。快看我的答案!谢谢你的回复。这是我的代码输出:
nil-nil可选(Error Domain=NSURLErrorDomain code=-1002“URL nicht unterstützt”UserInfo=0x1567d8b00{NSUnderlyingError=0x1567a8c00”Der Vorgang konnte-nicht abgeschlossen werden.(kCFErrorDomainCFNetwork Fehler-1002.),nserrorfailingurstringkey=www.
(…)_
.php,nserrorfailingurkey=www.
\u(…)\ ucode>.php,NSLocalizedDescription=URL nicht unterstützt})您知道这可能是什么吗?由于出现错误,数据和响应为零。错误在那里被定义为可选的(就像数据和响应一样),所以如果你想使用这些信息,你必须打开它。您将收到错误1002,该错误对应于NSURERROUNSUPPORTEDURL,通常由缺少的http://引起。然而,这里不是这样的——我会调查这个错误。用“替换”“”,它很好(我的服务器上有SSL的问题,我正在修复中)。如果你给我提供你要点击的网址,我可以试着让它工作。这也是我目前发现的。如果你发现了什么,那将是一种乐趣!坦克很多!!!