【发布时间】:2017-06-05 00:35:45
【问题描述】:
我有 iOS 框架,它使用 NSURLSessionDataTask 将 JSON 发送到服务器,如下所示:
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int responseStatusCode = [httpResponse statusCode];
if (responseStatusCode == 200)
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.delegate onJsonHttpResult:data andStatusResponse:responseStatusCode];
});
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.delegate onJsonHttpResult:nil andStatusResponse:responseStatusCode];
});
}
}];
[postDataTask resume];
但是每当我运行它时,[self.delegate onJsonHttpResult:nil andStatusResponse:responseStatusCode]; 都不会被调用。
当NSURLSessionDataTask 在框架内运行时,有什么方法可以在它之外获得价值?
谢谢
【问题讨论】:
-
方法 onjsonhttprekult 是自定义协议吗?如果有,您是否遵守此协议?
-
嗨 KGen,是的,它是自定义协议。我尝试将 onJsonHttpResult 放在 NSURLSessionDataTask 之外,它可以工作,但我不明白什么时候放在 NSURLSessionDataTask 中
-
你能展示一下设计的协议和你正在使用的控制器吗?您是否为控制器分配了协议,例如 controllerObj.delegate = self;等
-
responseStatusCode的价值是多少? -
嗨 Piyush Patel,responseStatusCode 值如 200 或 404
标签: ios objective-c iphone xcode ios9