передача данных из блоков в контроллер просмотра

#ios #objective-c

#iOS #objective-c

Вопрос:

Я получил данные с сервера, используя следующий код.Теперь я хочу отразить то же самое на другом контроллере представления, имеющем ячейки табличного представления.Как я могу передать данные из этого одноэлементного класса в класс, имеющий ячейки табличного представления.Пожалуйста, помогите с некоторым кодом на objective c. Заранее спасибо!

 -(NSDictionary *)getResponseFromSearchByRoutewithUrl:(NSString *)url {
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [urlRequest setHTTPMethod:@"GET"];
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

    NSDictionary *responseDictionary;
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

    NSURLSessionDataTask *task = [session dataTaskWithRequest: urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        //check if we encountered an error
        if(error != nil){
            NSLog(@"%@", [error localizedDescription]);
        }else{
            //get and check the HTTP status code
            NSInteger HTTPStatusCode = [(NSHTTPURLResponse *)response statusCode];
            if (HTTPStatusCode != 200) {
                NSLog(@"HTTP status code = %ld", (long)HTTPStatusCode);
            }

            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                if(data != nil){
                    NSError *parseError = nil;
                    NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:amp;parseError];
                    NSLog(@"The response is - %@",responseDictionary);

                }
            }];
        }
    }];


    [task resume];
    return responseDictionary;
}
 

Комментарии:

1. просто очистите свой вопрос «передавать данные, имеющие ячейки табличного представления», вот много способов передачи данных из одного представления в другое.

2. У меня есть view ControllerA, на котором есть tableview. И класс NetworkManger, в котором я определил вышеупомянутый метод. Я получаю ответ от сервера, но я не могу отразить этот ответ в ячейках табличного представления в ViewController A. Я новый разработчик, поэтому мне нужна ваша помощь с кодом.

3. Проверьте этот ответ gist.github.com/jitendrabenzatine /…

4. покажите свой responseDictionary ответ, отредактируйте свои вопросы.

5. @Lovely проверьте мой репозиторий. Все, что вы хотите, есть

Ответ №1:

 typedef void (^HttpCompletionBlock)     (NSString *token, NSError *error);

-(NSDictionary *)getResponseFromSearchByRoutewithUrl:(NSString *)url  :(HttpCompletionBlock)completionHandler {
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [urlRequest setHTTPMethod:@"GET"];
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

    NSDictionary *responseDictionary;
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

    NSURLSessionDataTask *task = [session dataTaskWithRequest: urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    //check if we encountered an error
    if(error != nil){
        NSLog(@"%@", [error localizedDescription]);
    }else{
        //get and check the HTTP status code
        NSInteger HTTPStatusCode = [(NSHTTPURLResponse *)response statusCode];
        if (HTTPStatusCode != 200) {
            NSLog(@"HTTP status code = %ld", (long)HTTPStatusCode);
        }



        [task resume];
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            if(data != nil){
                NSError *parseError = nil;
                NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:amp;parseError];
                NSLog(@"The response is - %@",responseDictionary);
                return completionHandler(responseDictionary,nil);

            }
            else {
                 return completionHandler(nil,error);

            }
        }];
    }
}];

}
 

Функция вызова WS

 - (IBAction)bankLoginPressed:(id)sender
{
    [HTTPClass getResponseFromSearchByRoutewithUrl:@"URL" :^(NSDictionary *dic, NSError *error) {
        if(error == nil)
        {
            NSLog(@"access code ==  %@ ",token);
        }
        else
        {       
            NSLog(@"Error ==  %@ ",error);
        }

    }];
}
 

Комментарии:

1. Что такое sendLogin в функции вызова?

2. Это не отражает словарь ответов на табличное представление cells..as ViewControllerB сначала загружается, а позже возвращает responseDictionary, из-за чего количество строк становится равным 0.

3. @Lovely: вы пробовали перезагрузить таблицу или вставить строку в основной поток?

4. Нет, потому что tableview находится на другом контроллере просмотра … как я могу это сделать из этого класса, здесь я обработал только управление подключением?

5. просто передайте делегирование или NSNotification