NSURLConnection委托和填充表视图

时间:2011-01-29 16:16:01

标签: iphone objective-c cocoa-touch

我必须调用NSURLConnection并拥有以下代理:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];

    NSString *responseString = [[NSString alloc] initWithData:responseData  
        encoding:NSUTF8StringEncoding];
    [responseData release];

    results = [NSArray array];
    results = [responseString JSONValue];
        NSLog(@"Number of rows: %d", [results count]);
}

//table view number of rows    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        // Return the number of rows in the section.
        //return [_userInfo.friendsInfo count];
        NSLog(@"Number of rows: %d", [results count]);
        return [results count];
    }

正如你所看到的,我试图打印出数组中的条目数,当我在NSURLConnection的委托内部时得到5,在tableView numberOfRowsInSection中得到0。 我想使用从NSURLConnection获得的数据来填充表格。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

我发现了两个潜在的问题:

  1. 你错过了保留。行“results = [NSArray array];”没有意义,你应该将JSONValue保留为“results = [[responseString JSONValue] retain];” (记得在某个时候发布!)
  2. 另外,在获取数据后是否正在重新加载tableView?你应该做一些像[table reloadData];或[self.tableView reloadData];取决于你的班级结构。

答案 1 :(得分:1)

您是否保留了结果指向的数组?我认为您需要调用setResults(如果它是合成的)或明确保留。