图像未显示使用Nsurlconnection Post方法

时间:2016-04-28 10:10:53

标签: ios uitableview nsurlconnection

nslog using json我在nsurlconnection方法中使用了POST并为&#34创建了四个数组;请参阅","购买","已更新","图像"。显示在tableviewcell但是"图像"没有显示。图像在" url中以png格式"。

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{


    NSError* error;
    json = [NSJSONSerialization JSONObjectWithData: mutableData
                                           options:kNilOptions
                                             error:&error];
    NSLog(@"%@",json);
    sellArray = [json valueForKeyPath:@"BranchByList.sell"];
    buyArray = [json valueForKeyPath:@"BranchByList.buy"];
    updataedArray = [json valueForKeyPath:@"BranchByList.updated"];
    imageArray = [json valueForKeyPath:@"BranchByList.flag_image"];

    [_datad reloadData];
  }

tableview委托方法是:

-(NSInteger)numberOfSectionsInTableView:(UITableView *) tableView{

    return 1;
}

-(NSInteger)tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger)section{
    return [sellArray count];
    return [buyArray count];
    return [updataedArray count];
    return [imageArray count];

    }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    TableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"path" forIndexPath:indexPath];
    cell.sellbl.text=[sellArray objectAtIndex:indexPath.row];
    cell.buylbl.text=[buyArray objectAtIndex:indexPath.row];
    cell.updatedlbl.text = [updataedArray objectAtIndex:indexPath.row];
    cell.imglbl.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];
       return cell;
}

-(void)tableView: (UITableView *) tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
  }

4 个答案:

答案 0 :(得分:1)

您正在直接为图片分配网址!这根本行不通。 您需要先将网址添加到NSUrl,然后使用NSData将网址转换为数据,然后将数据分配给图像。

要完成它,请在代码中添加以下代码行:

NSURL *url = [NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]];

NSData *data = [NSData dataWithContentsOfURL:url];

cell.imglbl.image = [UIImage imageWithData:data];

我发布了一个更多理解的例子。我有一个网址,我需要将该网址中的图像显示到我的设备上。对于那个m使用下面的代码行:

NSURL *url = [NSURL URLWithString:@"http://1.bp.blogspot.com/-9yd6LPL2N6U/VatsUdMffPI/AAAAAAAAAl4/Pq1S6Q20fy0/s1600/hello_world.gif"];

NSData *data = [NSData dataWithContentsOfURL:url];

_imgView.image=[UIImage imageWithData:data]; 

以上网址只是从谷歌拍摄的图片的随机网址。

结果:

enter image description here

答案 1 :(得分:0)

您正在调用图片,

cell.imglbl.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]; 

如果您的项目中有图像,那就没问题,否则您需要从网址下载它,例如,

  NSData *data = [NSData dataWithContentsOfURL:@"you url"];
  UIImage *img = [UIImage imageWithData:data];
  cell.imglbl.image = img;

或者您可以使用SDWebImage,更新第三方库来缓存图像。

希望这会有所帮助:)

答案 2 :(得分:0)

添加SDWebImage

在您的项目中

并使用此代码

[cell.imglbl setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

而不是

cell.imglbl.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];
       return cell;

答案 3 :(得分:0)

好像你没有将图像设置为cell.imglbl.image,而是它的网址。

cell.imglbl.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];

您可以使用某些第三方库(如SDWebImage)来异步下载图像。 https://github.com/rs/SDWebImage

(或者像这样下载它同步

NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]];
UIImage *image = [UIImage imageWithData:data];

另外我建议您使用词典来保存已下载的图像,其中的键将是单元格的索引路径。

希望有所帮助:)