我已经读了好几个小时了,我无法弄清楚为什么我的表不会用更新的数据重新加载,这是我以块形式提出的请求:
ASIHTTPRequest *_request= [ASIHTTPRequest requestWithURL:url];
__weak ASIHTTPRequest *request = _request;
request.requestMethod = @"POST";
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request setDelegate:self];
[request setCompletionBlock:^{
NSString *responseString = [request responseString];
NSData *responseData = [request responseData];
NSLog(@"Response: %@", responseString);
NSError* error;
json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSLog(@"request finished");
[CommMTable reloadData];
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"Error: %@", error.localizedDescription);
}];
[request startAsynchronous];
它成功获取json对象,因为它在我的控制台中打印,但表格没有更新!
这是我的表编译指示部分
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.json count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSDictionary *tempDictionary= [self.json objectAtIndex:indexPath.row];
if(cell==nil) {
cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
cell.textLabel.text = [tempDictionary objectForKey:@"title"];
return cell;
}
任何帮助表示赞赏,这真令人沮丧:(
答案 0 :(得分:0)
您是否检查过json数组是否已更新?并且你已经在pragma部分中使用了json数组作为属性(self.json),而不是在内部块中。
答案 1 :(得分:0)
json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
执行此操作时,json数组仅在setCompletionBlock
范围内可用。
由于你已经合成了json数组,你需要像
那样分配它 self.json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
如果这也不起作用,只需检查json的格式是否正确,并且您正在cellForRowAtIndexPath
中正确解析json。
答案 2 :(得分:0)
我发现了问题,我正确地做了一切(json格式和东西设置得当)。问题是由于某种原因,表格与其委托和数据源断开连接,对于遇到类似问题的人来说,尝试这个解决方案。
在xib文件中,只需按住ctrl +将tableview拖动到文件所有者,然后将其连接到委托和数据源。
如果您不喜欢具有以下行的界面构建器
,则可以仅使用代码执行此操作[myTableView setDataSource:self];
[myTableView setDelegate:self];
或
self.tableView.delegate = self.tableDelegate;
self.tableView.datasource = self.tableDelegate;
两者都应该起作用。