Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Macos 未调用NSURLSession完成块_Macos_Ios8_Nsurlsession - Fatal编程技术网

Macos 未调用NSURLSession完成块

Macos 未调用NSURLSession完成块,macos,ios8,nsurlsession,Macos,Ios8,Nsurlsession,因此,我提出了这个请求,并且从未调用过完成块 怎么了 此外,我还尝试了一种同步和异步形式,该形式使用NSURLConnection处理同一请求,效果非常好 编辑: 我尝试将dataTask变量分配给session.dataTaskWithRequest并在之后立即显示它。上面写着这个{suspended}suspended?为什么?所以我试着这样称呼它 var session = NSURLSession.sharedSession() session.dataTaskWithRequest(u

因此,我提出了这个请求,并且从未调用过完成块

怎么了

此外,我还尝试了一种同步和异步形式,该形式使用
NSURLConnection
处理同一请求,效果非常好

编辑:


我尝试将
dataTask
变量分配给
session.dataTaskWithRequest
并在之后立即显示它。上面写着这个
{suspended}
suspended?为什么?

所以我试着这样称呼它

var session = NSURLSession.sharedSession()
session.dataTaskWithRequest(urlRequest, 
                            completionHandler: {(data: NSData!, 
                                                 response: NSURLResponse!,                       
                                                 error: NSError!) in
                                                      println(data)
                                                      println(response)
                                                      println(error)
                                               })
它成功了


似乎我必须对默认挂起的会话任务调用
resume()

您也可以通过以下方式使用它:-

session.dataTaskWithRequest(urlRequest, 
                        completionHandler: {(data: NSData!, 
                                             response: NSURLResponse!,                       
                                             error: NSError!) in
                                                  print(data)
                                                  print(response)
                                                  print(error)
                                           }).resume()

你在使用游乐场吗

如果你是,你应该注意包括:

let url = "api url"

let nsURL = NSURL

let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL) {
(data, response, error) in
   // your condition on success and failure
}

task.resume()

为了让操场等待回调

在Swift 2.x中是这样的

 XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true)

这是一个相当独特的情况,但是如果在单元测试中使用URLSession,则需要设置期望值。否则,您的测试用例将结束,并且您的请求似乎永远不会返回。Swift 3.0.1

NSURLSession.sharedSession().dataTaskWithRequest(theRequest) { (data, response , error) in
    print(response)
}.resume()

我面临着同样的问题,我用自己的方式解决了它

    let expect = expectation(description: "dataTaskWithRequest - completes")

    if let url = URL(string: "https://www.google.com/") {

        let request = URLRequest(url: url)

        URLSession.shared.dataTask(with: request) { ( data, response, error) in

            print(data.debugDescription)
            print(response.debugDescription)
            print(error.debugDescription)

            expect.fulfill()

        }.resume()

        waitForExpectations(timeout: 10, handler: nil)
    }

并检查您是否已在
info.plist

中添加了
应用程序传输安全设置。这在Swift或Objective C中是相同的;所有NSURLSession任务都以挂起状态启动,必须“恢复”才能将其启动。它是基于C语言的客观语言,但它是我遇到的最好的非苹果类NSURLSession代码示例,因此浏览一下它可能会帮助您找到如何最好地使用它。对我一点帮助都没有:(@SergeVelikanov你尝试了什么?@BlackFlam3,没关系,我现在使用的是AFNetworking,它就像一个charmYou需要
导入xCplayde
)。
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * data, NSURLResponse * response, NSError * error) {

    if (!error)
    {
        NSLog(@"Data is %@",data);
        NSLog(@"Response is %@",response);
        NSLog(@"Error is %@",error);
    }
 }];

[dataTask resume];