2

我是目标-c的新手。我有个问题;

我正在从 JSON 获取和解析,并将它们写入带有数组的 tableview。这显然是一个很好的结果。

但是当我滚动底部时,我想获得第二页。我阅读大量文件。但我不能将第二页传递给 tableView。

这是我的代码摘要;

我正在使用第 0 页调用 JSON get 和 make 数组方法。(没问题)

- (void)viewDidLoad
{
    [self takeList:0];
}

我的 JSON 获取和生成数组方法。(问题就在这里)

-(void)takeList: (NSUInteger) page
{
    NSString * urlStr = [NSString stringWithFormat:@"http://www.EXAMPLE.com/json/main.json"];
    NSURL * url = [NSURL URLWithString:urlStr];
    NSData * data = [NSData dataWithContentsOfURL:url];
    if (page == 0) {
        array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    }else{
        new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        NSMutableArray *ar1 = [array mutableCopy];
        NSMutableArray *ar2 = [new_array mutableCopy];
        [ar1 addObject:ar2];
        [self.myTableView reloadData];
    }
}

我的滚动调用方法(没问题)

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{

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

    if ((currentOffset > 0) && (maximumOffset - currentOffset) <= 140) {
        pages++;
        [self takeList:pages];
    }

}

最后cellForRowAtIndexPath使用这个数组。

请帮助我“如何将新页面发送到 tableView?”。

谢谢(对不起我的英语不好。)

4

2 回答 2

3

这段代码

 new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSMutableArray *ar1 = [array mutableCopy];
    NSMutableArray *ar2 = [new_array mutableCopy];
    [ar1 addObject:ar2];
    [self.myTableView reloadData];    

不会做任何有用的事情。这不是您在objective-c(或我能想到的任何语言)中连接数组的方式。相反,您需要将其替换为以下内容

 new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    array = [array arrayByAddingObjectsFromArray:new_array];
    [self.myTableView reloadData];    
于 2013-09-12T07:25:56.630 回答
1

正如我所见,您在这里有两个问题:当您的页面为 0 时,您使用称为“数组”的 NSArray 作为数据源。当您获取下一页时,您正在使用 ar1。

将“array”设为 NSMutableArray 并执行以下操作:

-(void)takeList: (NSUInteger) page
{
    NSString * urlStr = [NSString stringWithFormat:@"http://www.EXAMPLE.com/json/main.json"];
    NSURL * url = [NSURL URLWithString:urlStr];
    NSData * data = [NSData dataWithContentsOfURL:url];
    array = [array arrayByAddingObjectsFromArray:[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]];
self.myTableView reloadData];
}

当然,您必须先在其他地方初始化您的数组。另外我会使用异步请求并检查是否下载了任何数据并且没有解析错误。

于 2013-09-12T08:19:27.567 回答