gpt4 book ai didi

ios - 在 TableView 中创建行时出错

转载 作者:行者123 更新时间:2023-11-29 03:53:02 25 4
gpt4 key购买 nike

在表格 View 中创建行时出错。

我的 TableView 加载了 json。

我在这里看到了很多例子,但是没有一个能够解决

我的代码

NSMutableArray *myArray = [NSMutableArray arrayWithArray:news];
[myArray insertObject:@"teste" atIndex:0];
NSMutableArray *path = [NSMutableArray arrayWithObject:[NSIndexPath indexPathForRow:[news count]-1 inSection:1]];
[self.tableView insertRowsAtIndexPaths:path withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];

显示错误

2013-05-30 23:15:17.345 lerJson[1141:c07] * -[UITableView _endCellAnimationsWithContext:]、/SourceCache/UIKit_Sim/UIKit-2380.17/UITableView.m:908 中断言失败2013-05-30 23:15:17.347 lerJson[1141:c07] 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“尝试将第 11 行插入部分” 1,但是更新后只有1节'** 首先抛出调用堆栈:(0x1c95012 0x10d2e7e 0x1c94e78 0xb68665 0xb670b 0xc4945 0xc4973 0x476d 0x76d78 0x789eb 0x2e185a 0x2e099b 0x2e20df 0x2e4d2d 0x2e4cac 0x2dca28 0x49972 0x49e53 0x27d4a 0x19698 0x1bf0df9 0x1bf0ad0 0x1c0abf5 0x1c0a962 0x1c3bbb6 0x1c3af44 0x1c3ae1b 0x1bef7e3 0 x1bef668 0x16ffc 0x26ad 0x25d5)libc++abi.dylib:终止调用抛出异常

我的完整代码j2_ViewController.h

#import "j2_ViewController.h"

@interface j2_ViewController ()

@end

@implementation j2_ViewController



- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

[self carregaDados];

}

-(void)carregaDados
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


NSURL *url2 = [[NSURL alloc] initWithString:[@"http://localhost:3000/json.aspx?ind=0&tot=12" stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]];

NSURLRequest *request = [NSURLRequest requestWithURL:url2];

[[NSURLConnection alloc] initWithRequest:request delegate:self];
}



-(void)carregaDados2
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


NSURL *url2 = [[NSURL alloc] initWithString:[@"http://localhost:3000/json.aspx?ind=12&tot=12" stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]];

NSURLRequest *request = [NSURLRequest requestWithURL:url2];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSError *jsonParsingError = nil;

NSMutableData *myData = [[NSMutableData alloc]init];
[myData appendData:response];


NSMutableArray *news2;

news2 = [NSJSONSerialization JSONObjectWithData:myData options:nil error:&jsonParsingError];
//NSLog(@"LOG: %@", news2);


NSMutableArray *myArray = [NSMutableArray arrayWithArray:news];
[myArray addObjectsFromArray:news2];

NSLog(@"LOG: %@", myArray);

news = myArray;

//NSLog(@"Erro: %@", jsonParsingError);
[tableViewjson reloadData];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
data = [[NSMutableData alloc]init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
{
[data appendData:theData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

NSError *e = nil;
news = [NSJSONSerialization JSONObjectWithData:data options:nil error:&e];

[tableViewjson reloadData];
//NSLog(@"erro=%@",e);

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Erro" message:@"Não foi possivle fazer o download - cheque sua conexão 3g ou wi-fi" delegate:nil cancelButtonTitle:@"cancelar" otherButtonTitles:nil];
[alert show];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSInteger teste = [news count];
return teste;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"celula";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"nome"];

return cell;
}

//chama essa função quando o scroll atinge seu final
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{

NSInteger currentOffset = scrollView.contentOffset.y;
NSInteger maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;

if(maximumOffset - currentOffset <= -40)
{
//carega mais dados
//[self carregaDados2];
[self.tableView beginUpdates];



NSMutableArray *myArray = [NSMutableArray arrayWithArray:news];
[myArray insertObject:@"teste" atIndex:0];
NSMutableArray *path = [NSMutableArray arrayWithObject:[NSIndexPath indexPathForRow:[news count]-1 inSection:1]];
[self.tableView insertRowsAtIndexPaths:path withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
}
}



@end

我的代表团没有改变

最佳答案

您还需要像这样更新数据源: [news insertObject:@"teste" atIndex:0];

我假设您只有 1 个部分。

更改此代码: NSMutableArray *path = [NSMutableArray arrayWithObject:[NSIndexPath indexPathForRow:[news count] inSection:<b>1</b>]];

此代码: NSMutableArray *path = [NSMutableArray arrayWithObject:[NSIndexPath indexPathForRow:[news count] inSection:<b>0</b>]];

节和行从 0 开始。

关于ios - 在 TableView 中创建行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com