所以我在我的应用程序中有这个方法返回BOOL if和update可用于我的应用程序内容
- (BOOL)isUpdateAvailable{
NSData *dataResponse=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"url that returns json object"] ];
if(dataResponse!=nil){
NSError *error;
dicUpdates = [NSJSONSerialization JSONObjectWithData:dataResponse options:NSJSONReadingMutableContainers error:&error];
}
if(dicUpdates.count > 0) isUpdateAvailable = YES;
else isUpdateAvailable = NO;
return isUpdateAvailable;
}
我需要一个同步请求,因为下一个视图控制器将依赖于服务器响应。然而,有时服务器需要很长时间才能响应或者互联网真的很慢,我需要设置一个时间来防止应用被“冻结”。
我之前使用NSUrlconnection来完成此任务,但已弃用。
另外,我尝试使用NSURLSession,(也用它来下载后台线程中的更新),但我只能弄清楚它是否可以用于同步请求。
知道怎么处理这个吗?我只需要一个返回BOOL
的同步方法。最好的问候。
答案 0 :(得分:-1)
我们必须在NSURLSession中使用NSURLRequest来设置超时间隔。 检查以下代码:
- (BOOL)isUpdateAvailable{
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"url that returns json object"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:4]//timeout
completionHandler:^(NSData *dataResponse,
NSURLResponse *response,
NSError *error) {
// handle response
if(dataResponse!=nil){
NSError *error;
dicUpdates = [NSJSONSerialization JSONObjectWithData:dataResponse options:NSJSONReadingMutableContainers error:&error];
}
if(dicUpdates.count > 0) isUpdateAvailable = YES;
else isUpdateAvailable = NO;
return isUpdateAvailable;
}] resume];
}