iPhone UITableView正在从ConnectiondFinishLoading填充
我花了好几个小时想弄明白这一点。我有一些来自NSURLConnection的JSON。这工作正常,我已经将其解析为一个数组。但我似乎无法从ConnectiondFinishLoading方法中取出数组。我在UITableViewCell方法中获得(null)。我假设这是一个保留问题的范围,但我对ObjC太陌生了,不知道该怎么办。任何帮助都将不胜感激。iPhone UITableView正在从ConnectiondFinishLoading填充,iphone,objective-c,json,uitableview,nsurlconnection,Iphone,Objective C,Json,Uitableview,Nsurlconnection,我花了好几个小时想弄明白这一点。我有一些来自NSURLConnection的JSON。这工作正常,我已经将其解析为一个数组。但我似乎无法从ConnectiondFinishLoading方法中取出数组。我在UITableViewCell方法中获得(null)。我假设这是一个保留问题的范围,但我对ObjC太陌生了,不知道该怎么办。任何帮助都将不胜感激。 干杯 -(void)连接dFinishLoading:(NSURLConnection*)连接{ [连接释放]; NSString*respon
干杯
-(void)连接dFinishLoading:(NSURLConnection*)连接{
[连接释放];
NSString*responseString=[[NSString alloc]initWithData:responseData编码:NSUTF8StringEncoding];
[回应数据发布];
SBJSON*json=[[SBJSON alloc]init];
NSDictionary*results=[json objectWithString:responseString];
self.dataArray=[results objectForKey:@“data”];
NSMutableArray*tableArray=[[NSMutableArray alloc]initWithObjects:nil];
for(数据数组中的NSString*元素){
//NSLog(@“%@,[element objectForKey:@“name]”);
NSString*tmpString=[[NSString alloc]initWithString:[element objectForKey:@“name”];
[tableArray addObject:tmpString];
}
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
静态NSString*CellIdentifier=@“Cell”;
UITableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
如果(单元格==nil){
cell=[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault重用标识符:CellIdentifier]自动释放];
}
//配置单元格。
//cell.textlab.text=[self.tableView objectAtIndex:indexath.row];
cell.textlab.text=[self.tableArray objectAtIndex:indexath.row];
NSLog(@“%@”,表格数组);
返回单元;
}
[连接释放]
。连接
对象是自动删除的,因此这可能会导致崩溃tableArray
的属性?如果是这样,您将重新声明此方法中的名称(您应该得到编译器警告)李>
仔细想想,下面是该方法的第二个1/2部分的外观:
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithObjects:nil];
for (NSString *element in dataArray) {
[tmpArray addObject:[element objectForKey:@"name"]];
}
self.tableArray = tmpArray;
[tmpArray release];
在
connectiondFinishLoading:
中,您使用declaretableArray
作为局部变量。因此,它将永远不会分配给self.tableArray
解决方案:在接受了kubi和st3fan关于
self.tableArray
的建议后,我发现我必须用[self.tableView reloadData]重新加载tableView代码>
我遇到了同样的问题,我通过重新加载表解决了这个问题
我在ConnectionIDFinishLoading函数的末尾插入了这一行
[self.tableView reloadData];
而且很有效。kubi。我尝试了这种方法,但在UITableVIewCell方法中仍然得到null?但是我在ConnectiondFinishLoading中得到了正确的值。它仍然卡在那里。。。谢谢你的帮助。我注意到了:2010-02-06 13:38:07.907球场[34368:207](空)2010-02-06 13:38:07.908球场[34368:207](空)2010-02-06 13:38:07.910球场[34368:207](空)2010-02-06 13:38:07.952球场[34368:207](“我的高尔夫球场”、“格伦安妮”、“艾莉莎牧场”、“圣巴巴拉高尔夫俱乐部”,“Rancho San Marcos”)UITableViewCell似乎在ConnectionIDFinishLoading之前加载。因此,值还不存在……很高兴一切顺利!附言。您应该将我们的一个答案标记为正确。