Search code examples
iosnsurl

NSData not accepting escaped / UTF8 encoded URL


I am trying to create an NSData object that contains the contents of a file in my main bundle.

NSString *chordPath = [[NSBundle mainBundle] pathForResource:chordName ofType:@"png"];

NSURL *chordURL = [NSURL URLWithString:[chordPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *chordImageData = [NSData dataWithContentsOfURL:chordURL];
UIImage *chordImage = [UIImage imageWithData:chordImageData];

Prior to using stringByAddingPercentEscapesUsingEncoding I was getting a nil URL, so I went ahead and fixed that by reencoding the string. Now I get a valid URL but the chordImageData object is nil for me. The file is definitely included in my main bundle (since I was able to get the URL to begin with) so I am wondering what's wrong.

EDIT:

Running this:

NSData *chordImageData = [NSData dataWithContentsOfURL:chordURL options:NSDataReadingMapped error:&dataCreationError];

Gets me this for the error:

po dataCreationError
Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa error 256.)" UserInfo=0x7530a00

Looking around Google it seems that the URL is still not encoded correctly. Anyone know an additional step to make sure the encoding is valid?


Solution

  • Try using fileURLWithPath:, something like this:

    NSString *chordPath = [[NSBundle mainBundle] pathForResource:chordName ofType:@"png"];
    
    NSURL *chordURL = [NSURL fileURLWithPath: chordPath];
    NSData *chordImageData = [NSData dataWithContentsOfURL:chordURL];
    UIImage *chordImage = [UIImage imageWithData:chordImageData];