0

URLを使用して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]];

これは完全に機能しています。

ここで、フィードからのデータを使用して URL を試し、以下を試しました。

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) としてデータを取得するのか理解できませんか? データが 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:@""];
4

3 に答える 3

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];
    });
});
}
于 2013-08-15T10:00:16.907 に答える