NSMutableArray仅初始化一次

时间:2012-12-29 09:43:18

标签: objective-c ios uitableview nsmutablearray nsscrollview

我有一个程序通过在NSMutableArray中存储项来解析Web服务中的xml,该程序初始化如下:

- (id)init {

    self = [super init];
    if (self)
    {
        items = [[NSMutableArray alloc] init];
    }
    return self;
}

我已经使用ScrollView委托来检查用户何时触及tableview的底部,我在其中调用Web服务的另一个页面以在已经获取的项目的底部加载更多项目。

但是当重新加载tableview时,它不会在已经获取的项目的底部添加新项目,而只会显示新项目。

在我可以使用动画设置insertrowsatindexpaths之前,我相信NSMutableArray会再次初始化,这会使旧条目消失并仅显示新条目。我怎样才能使NSMutableArray只初始化一次,所以当它获取新条目时,它会在可变数组中已经获取的条目之后加载它们。

修改

根据评论,看起来我对MutableArray做得很好,并且只进行了一次初始化。然后数据源一定有问题。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[channelFeed items] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ItemsViewCell *cell = (ItemsViewCell *)[tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];

    if (cell == nil) {
        cell = [[ItemsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
    }

    FeedItem *item = [[channelFeed items] objectAtIndex:[indexPath row]];

    cell.titleLabel.text = [item title];
    cell.pubDateLabel.text = [item pubDate];
    cell.creatorLabel.text = [item creator];
    [[cell thumbImage] setImage:[item thumbnail]];

    return cell;
}

1 个答案:

答案 0 :(得分:3)

我会在一个更方便的地方初始化数组。显然,您的代码调用init,它将初始化数组并删除其内容。