我在调试时有一个包含5个项目的数组,但是当我尝试将它们绑定到tableview时,tableview为空而没有错误。 如果手动执行数组并使用initwithobjects但我已经有一个数组,它可以工作。
在此之后我的数组有5个对象
array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
问题是我尝试初始化数组的部分。
如果我这样做,我的数组在之后为空。
array = [[NSMutableArray alloc] init];
如果我这样做,我的数组仍然有5个对象但没有加载到表
array = [array init];
感谢您的帮助
所有代码
NSArray *array;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *request = [NSString stringWithFormat:
@"http://192.168.99.99/IBookService.svc/GetBooksNames"];
NSURL *URL = [NSURL URLWithString:
[request stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:URL options:NSDataReadingUncached error:&error];
if(!error)
{
array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
array = [[NSMutableArray alloc] init];
}
_tblCustomers.dataSource = self;
_tblCustomers.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identity = @"custTbl";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identity];
if (cell==nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identity];
}
cell.textLabel.text = [array objectAtIndex:indexPath.row];
return cell;
}
答案 0 :(得分:1)
您将对象添加到数组中,然后分配它(清除它)。做其他事情:
if(!error)
{
array = [[NSMutableArray alloc] init];
array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
}
答案 1 :(得分:0)
当您离开viewDidLoad方法时,当前数组已取消分配。您应该使数组成为类的成员以避免这种情况。例如,您可以添加以下
{
NSArray *array;
}
行后
@implementation Your_class_name_here
删除当前行
NSArray *array;