У меня есть метод (requestData), который можно вызвать несколько раз в моем ViewController, но при первом загрузке ViewController (в методе ViewDidLoad) мне нужно вызвать его два раза, НО второй запрос должен быть отправлен только после того, как первый запрос завершен:отправить второй запрос после первого завершения
- (void)viewDidLoad {
[super viewDidLoad];
dataForPlot = 1;
[self requestData: dataForPlot];
dataForPlot = 2;
[self requestData: dataForPlot];
}
- (void) requestData: (int) forPlot {
...
[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, NSError *error, BOOL success) {
if (success) {
if (forPlot == 1) {
...
}
else if (forPlot == 2) {
...
}
}
}
Я знаю, что, вероятно, необходимо использовать блоки, но, даже если я пытался читать некоторые учебники, я не знаю, как.
Кто-нибудь может мне помочь?
Спасибо, Corrado
Вот что я реализовал следующие Duncan предложение:
typedef void(^myCompletion)(BOOL);
- (void)viewDidLoad {
[super viewDidLoad];
[self requestData:^(BOOL finished) { // first request
if(finished) {
NSLog(@"send second request");
[self requestData: ^(BOOL finished) {}]; // second request
}
}];
- (void) requestData: (myCompletion) compblock {
...
[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, NSError *error, BOOL success) {
if (success) {
...
NSLog(@"request completed");
compblock(YES);
}
}
Спасибо, я полагаю, это правильное решение, но у меня возникли проблемы с написанием кода (блоки настолько жесткие использовать) ... возможно ли иметь некоторую помощь в реализации вашего предложения? – Corrado
Опубликуйте то, что вы пытаетесь изменить для своего исходного вопроса, а также проблемы, с которыми вы сталкиваетесь. –
Кажется, я наконец нашел что-то, что работает (см. Мой отредактированный вопрос) ... было бы признательно, если бы вы могли подтвердить, что я сделал это правильно. Благодаря ! – Corrado