#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