У меня есть табличный вид, который использует результат выборки данных с NSURLSession
в качестве источника данных. Вот мой NSArray
, который отвечает за эту таблицу.Перезагрузка таблицы после запроса завершена
@property (strong, nonatomic) NSMutableArray *results;
И это мой делегат и метод DataSource
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [_results count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
// Configure the cell...
WordResult *word = (WordResult *)[_results objectAtIndex:indexPath.row];
cell.textLabel.text = word.defid;
return cell;
}
В моей viewDidLoad
я извлекаться просьбой Mashape и попытаться сопоставить результат в мой пользовательском класс WordResult
Вот моя выборка метод
#pragma mark - GET Request
- (void)fetchDataFromMashape:(NSURL *)URL {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPMethod:@"GET"];
[request setValue:API_KEY_MASHAPE forHTTPHeaderField:API_MASHAPE_HEADER_1];
[request setValue:API_ACCEPT forHTTPHeaderField:API_MASHAPE_HEADER_2];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
self.results = [self processResultData:jsonResult];
}];
[task resume];
}
- (NSMutableArray *)processResultData:(NSDictionary *)dict {
NSArray *list = [dict objectForKey:@"list"];
NSMutableArray *tempListOfWord = [[NSMutableArray alloc] init];
if (list) {
for (NSDictionary *item in list) {
WordResult *word = [[WordResult alloc] initWithDictionary:item];
[tempListOfWord addObject:word];
}
}
NSLog(@"Result array of word: %@", tempListOfWord);
return tempListOfWord;
}
Моя проблема: я не знаю, где перезагрузить данные после того, как массив результатов был назначен d методом fetch и отклонить мой прогресс HUD, который я показал на моем viewDidLoad
. Вот мой viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
[SVProgressHUD show];
[self fetchDataFromMashape:_finalURLrequest];
}
Так где я должен поставить [SVProgressHUD dismiss]
и [self.tableView reloadData]
после моего запроса была закончена? Любая помощь будет оценена по достоинству.
Вы должны уволить ваш [SVProgressHUD увольняют] над возвратом, а затем перезагрузите таблицу. [0]. –
Уже пробовал в моей 'processResultData' прямо перед возвратом, но он не работает @KamleshShingarakhiya –