将现有Array绑定到tableView IOS

时间:2014-02-18 10:30:31

标签: ios iphone objective-c uitableview nsarray

我在调试时有一个包含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;

}

2 个答案:

答案 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;