6

我有一些项目,我必须从 JSON 粘贴图像。我尝试查找有关此的任何教程,尝试查看此主题的任何视频,但什么也没有。所以我的问题有:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:webdata options:0 error:nil];
    NSDictionary *playlist =[allDataDictionary objectForKey:@"playlist_data"];

    for (NSDictionary *diction in playlist) {

        NSString *name = [diction objectForKey:@"text1"];
        NSString *namesong = [diction objectForKey:@"text2"];
        NSString *images = [diction objectForKey:@"image"];
        NSLog(@"%@", images);        
        [array addObject:text1];
        [array2 addObject:text2];
    }
    [[self tableTrack]reloadData];
}

我在单元格中添加了文本 1 和文本 2,它的工作很完美,但是如何将图像添加到数组 3(我的 tableView 中的单元格中的图像)?我也尝试添加图像,但它对我不起作用:

NSURL *imageURL = [NSURL URLWithString:[appsdict objectForKey:@"image"]];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *imageLoad = [[UIImage alloc] initWithData:imageData];
cell.imageView.image = imageLoad;

请帮助解决我的问题,或者提供一些关于从 JSON 解析图像的教程,YouTube 也没有来自 JSON 解析的完美教程。谢谢!

4

3 回答 3

1

不要保留多个数据源,如,array1等。这不是很好的编码,在调试/修复问题时会混淆。而是维护单个数组,其中包含用于在表格视图的单个单元格中显示的信息。array2array3

for (NSDictionary *dict in playlist) {
    // array is single data source
    [array addObject:diction];
}

然后在将数据分配给表格视图单元格使用时,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:MyIdentifier] autorelease];
    }
    cell.text1 = [[array objectAtIndex:indexPath.row] objectForKey:@"text1"];
    cell.text2 = [[array objectAtIndex:indexPath.row] objectForKey:@"text2"];

    //For displaying image by lazy loading technique use SDWebImage.

   [cell.imageView setImageWithURL:[NSURL URLWithString:[[array objectAtIndex:indexPath.row] objectForKey:@"image"]] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

   // If no place holder image, use this way
   // [cell.imageView setImageWithURL:[NSURL URLWithString:[[array objectAtIndex:indexPath.row] objectForKey:@"image"]] placeholderImage:nil];
}

就像我在评论中提到从 JSON 响应中的 URL 延迟加载图像一样,使用SDWebImage. 用法很简单,就像我上面展示的那样。或者,您可以通过研究 Apple 的以下示例代码来实现自己的延迟加载:LazyTableImages

希望有帮助!

于 2013-10-22T07:06:08.983 回答
0

根据https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.htmlhttp://www.json.org/你不能在 JSON 中保存二进制数据(除非它在 ​​base64 中)。

webdata您的 JSON似乎有问题。您@"image"在调试时是否检查了该字典中键下设置的内容?您也可以使用[NSJSONSerialization isValidJSONObject:webdata]它来查看您的数据是否正常。

于 2013-10-22T06:59:55.780 回答
0
//prepare your method here..


-(void)hitimageurl{

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{


 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:replacephotostring]];

    //set your image on main thread.
    dispatch_async(dispatch_get_main_queue(), ^{



        if (_photosArray==nil) {
            _showImageView.image = [UIImage imageNamed:@"noimg.png"];

        } else {
            [_showImageView setImage:[UIImage imageWithData:data]];
        }



    });
});
于 2016-08-20T13:41:35.697 回答