У меня есть функция, где тип возврата - «BOOL» и в тело функции. Вызов HTTP-запроса.Как вернуть значение функции из тела блока?
Если имеются данные, я хочу вернуть «Истину». Я хочу управлять синхронно.
- (BOOL) randomFunction {
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithRequest:mutableRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (data) {
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &error];
NSString *status = (NSString *)[JSON valueForKey:@"enabled"];
if ([status isEqualToString:@"true"]) {
// return YES; // ERROR
}
}
// return NO; // ERROR
}] resume];
}
ERROR:
Incompatible block pointer types sending 'BOOL (^)(NSData * _Nullable __strong, NSURLResponse * _Nullable __strong, NSError * _Nullable __strong)' to parameter of type 'void (^ _Nonnull)(NSData * _Nullable __strong, NSURLResponse * _Nullable __strong, NSError * _Nullable __strong)'
** Нет, вы не хотите его синхронно **. Даже если вы хотите, это плохая идея, она заблокирует ваше приложение во время веб-звонка (представьте людей в метро, нет сети, ваше приложение должно быть убито). Проверьте мой ответ, я обновил его, чтобы он соответствовал вашим потребностям. – AnthoPak
@ AnthoninC. спасибо за указание на темную сторону синхронного вызова в моем случае ... –
Без проблем приятель, рад помочь. – AnthoPak