使用 Nsurlconnection Post 方法未显示图像

Image not showing using Nsurlconnection Post method

我在 POST 方法中使用 nsurlconnection 并为 "see"、"buy"、"updated"、[= 创建了四个数组24=]。在 tableviewcell 中显示,但 "image" 未显示。 "url in png format".

中的图像
-(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{
  }

你调用的图片是这样的,

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

如果您的项目中有图像就可以了,否则您需要从 url 下载它,您得到的响应是

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

或者你可以使用SDWebImage,伟大的第三方库来缓存图像。

希望这会有所帮助:)

添加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;

您似乎没有将图像设置为 cell.imglbl.image,而是 url..

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];

)

另外我建议你有一个字典来保存已经下载的图像,其中的键是单元格的索引路径。

希望对您有所帮助:)

您是直接将url分配给图像!那根本行不通。 需要先在NSUrl中添加url,然后使用NSData将url转化为数据,再赋值给图片。

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

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

NSData *data = [NSData dataWithContentsOfURL:url];

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

我再发布一个示例以加深理解。我有一个 url,我需要将 url 中的图像显示到我的设备上。对于那个 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]; 

以上 url 只是随机 url 从 google 中截取的图像。

结果: