为什么图像没有在imageview中显示

时间:2013-08-15 08:25:32

标签: ios objective-c uiimageview uiimage

我正在尝试使用网址

为imageview设置图片

我尝试了以下代码...

NSString *imgURL = [NSString stringWithFormat:@"http://sahhtna.hardtask.org/Files/Clients/thumb/2e10ec86-f323-4889-a996-00cf6758f354.JPG"];
NSLog(@"imageURL===%@", imgURL);
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL]];
NSLog(@"=====%@", data);
[myImageView setImage:[UIImage imageWithData:data]];

这很完美。

现在,我尝试了使用Feed中的数据的网址,并在下面尝试过。

NSString *imgURL = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"Image"]];
NSLog(@"imageURL===%@", imgURL);
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL]];
NSLog(@"=====%@", data);
[myImageView setImage:[UIImage imageWithData:data]];

这给我输出如下。

2013-08-15 11:22:56.725 Sahhtna[7555:11303] imgURL==http://sahhtna.hardtask.org/Files/Clients/thumb/2e10ec86-f323-4889-a996-00cf6758f354.JPG
2013-08-15 11:22:56.726 Sahhtna[7555:11303] =====(null)

当字符串相同时,我不明白为什么我将数据作为(null)?由于数据为空,我在UIImageView中没有得到任何图像。

知道出了什么问题吗?


当我NSLog(@"[NSURL URLWithString:imgURL]==%@", [NSURL URLWithString:imgURL]);时,我的输出为[NSURL URLWithString:imgURL]==(null)


我明白了。在字符串的末尾,有Enter(新行)。我该如何删除它?

我得到了解决方案。

有进入和空白区域。

NSString *imgURL = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"Image"]];
imgURL = [imgURL stringByReplacingOccurrencesOfString:@"\n" withString:@""];
imgURL = [imgURL stringByReplacingOccurrencesOfString:@" " withString:@""];

3 个答案:

答案 0 :(得分:1)

有进入和空白区域。下面有诀窍。

NSString *imgURL = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"Image"]];
imgURL = [imgURL stringByReplacingOccurrencesOfString:@"\n" withString:@""];
imgURL = [imgURL stringByReplacingOccurrencesOfString:@" " withString:@""];

答案 1 :(得分:1)

试试这个,

- (void)viewDidLoad
{
  [super viewDidLoad];
   NSString *imgURL = [NSString stringWithFormat:@"%@", [[feeds objectAtIndex:indexPath.row] objectForKey:@"Image"]];
  [self downloadingServerImageFromUrl:myImageView AndUrl:imgURL];
}

-(void)downloadingServerImageFromUrl:(UIImageView*)imgView AndUrl:(NSString*)strUrl
{

NSString* theFileName = [NSString stringWithFormat:@"%@.jpg",[[strUrl lastPathComponent] stringByDeletingPathExtension]];
NSFileManager *fileManager =[NSFileManager defaultManager];
NSString *fileName = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"tmp/%@",theFileName]];


imgView.backgroundColor = [UIColor clearColor];
UIActivityIndicatorView *actView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[imgView addSubview:actView];
[actView startAnimating];
CGSize boundsSize = imgView.bounds.size;
CGRect frameToCenter = actView.frame;
// center horizontally
if (frameToCenter.size.width < boundsSize.width)
    frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
else
    frameToCenter.origin.x = 0;

// center vertically
if (frameToCenter.size.height < boundsSize.height)
    frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
else
    frameToCenter.origin.y = 0;

actView.frame = frameToCenter;


dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{

    NSData *dataFromFile = nil;
    NSData *dataFromUrl = nil;

    dataFromFile = [fileManager contentsAtPath:fileName];
    if(dataFromFile==nil){
        NSString *url =[strUrl stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        url=[url stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        url=[url stringByReplacingOccurrencesOfString:@" " withString:@""];

        url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSError* error = nil;
        dataFromUrl = [NSData dataWithContentsOfURL:[NSURL URLWithString:url] options:NSDataReadingUncached error:&error];

        if (error) {
            NSLog(@"%@", [error localizedDescription]);
        } else {
        }
    }

    dispatch_sync(dispatch_get_main_queue(), ^{

        if(dataFromFile!=nil){

            myImageView.image=[UIImage imageWithData:dataFromFile];
        }else if(dataFromUrl!=nil){
            myImageView.image=[UIImage imageWithData:dataFromUrl];
            NSString *fileName = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"tmp/%@",theFileName]];

            BOOL filecreationSuccess = [fileManager createFileAtPath:fileName contents:dataFromUrl attributes:nil];
            if(filecreationSuccess == NO){
                NSLog(@"Failed to create the html file");
            }

        }else{
            myImageView.image=[UIImage imageNamed:@"no_image.jpg"];
        }
        [actView removeFromSuperview];
    });
});
}

答案 2 :(得分:0)

试试这个:

replaceOccurrencesOfString:@"\\n" withString:@""

replaceOccurrencesOfString:@" " withString:@""