我有一個需要等待完成處理的結果返回的該值將完成處理程序內設置一個布爾函數:等到完成處理程序結束以返回BOOL?
-(BOOL) fetchFeed
{
......
NSURLSessionDataTask *dataTask =
[sharedSessionMainQueue dataTaskWithRequest:req completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error){
NSMutableArray *jsonObject = [NSJSONSerialization JSONObjectWithData:data
options:0
error:nil];
dispatch_async(dispatch_get_main_queue(), ^{
if(!jsonObject)
{
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){[self dismissViewControllerAnimated: YES completion: nil];}];
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Connection problem." message:@"Please check your internet connection and trying logging in again." preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:ok];
[self presentViewController:alert animated:YES completion:nil];
_internetFailed = YES;
}
else
{
_internetFailed = NO;
}
});
}];
[dataTask resume];
return _internetFailed;
}
的問題是,現在_internetFailed之前返回完成處理程序的結束。我嘗試將「return _internetFailed」移動到完成處理程序中,但這是不允許的。問題:我應該如何構造這個以便返回等待完成處理程序的結束?
我環顧四周,但在完成處理程序類型範例中找不到完成處理程序。還有什麼其他選擇?在此先感謝您的任何建議。
你可以使用信號量 – Andy 2014-12-04 20:29:24
@安迪謝謝,我甚至不知道那些存在。將研究它。 – 2014-12-04 20:48:24