NSData & NSURL - url with space having problem NSData & NSURL - url with space having problem xcode xcode

NSData & NSURL - url with space having problem


Use: stringByAddingPercentEscapesUsingEncoding:

Returns a representation of the receiver using a given encoding to determine the percent escapes necessary to convert the receiver into a legal URL string.

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

A representation of the receiver using encoding to determine the percent escapes necessary to convert the receiver into a legal URL string. Returns nil if encoding cannot encode a particular character

Added per request by @rule

NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";NSString* urlTextEscaped = [urlText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL *url = [NSURL URLWithString: urlTextEscaped];NSLog(@"urlText:        '%@'", urlText);NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);NSLog(@"url:            '%@'", url);

NSLog output:

urlText:        '70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg'  urlTextEscaped: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'  url:            '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'  


A swift 3.0 approach (stringByAddingPercentEscapesUsingEncoding and stringByAddingPercentEncodingWithAllowedCharacters seems now deprecated):

let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)


stringByAddingPercentEscapesUsingEncoding has been deprecated in iOS 9.0, it is recommended you use stringByAddingPercentEncodingWithAllowedCharacters instead.

Here's the Objective-C code for > iOS 9.0

NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";NSString* urlTextEscaped = [urlText stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];NSURL *url = [NSURL URLWithString: urlTextEscaped];NSLog(@"urlText:        '%@'", urlText);NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);NSLog(@"url:            '%@'", url);