Jeeva
Jeeva

Reputation: 448

Created NSURL is null

NSURL printing null. What's the reason?

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]];

NSLog(@"urlString = %@",webStr); // its printing correct url string

NSURL *webURL = [[NSURL alloc] initWithString:webStr];

NSLog(@"url = %@",webURL); // its printing null

[webURL release];

[webStr release];

Upvotes: 9

Views: 10655

Answers (3)

Infinite Possibilities
Infinite Possibilities

Reputation: 7466

You should do the following.

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]];

NSLog(@"urlString = %@",webStr); // its printing correct url string

NSURL *webURL = [[NSURL alloc] initWithString:[webStr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];

NSLog(@"url = %@",webURL); // it should print it

[webURL release];

[webStr release];

I have used NSASCIIStringEncoding but you can use UTF8 too or any other encoding.

Upvotes: 28

justin
justin

Reputation: 104698

from the docs for -[NSURL initWithString:]:

If the string was malformed, returns nil.

This method expects URLString to contain any necessary percent escape codes, which are ‘:’, ‘/’, ‘%’, ‘#’, ‘;’, and ‘@’. Note that ‘%’ escapes are translated via UTF-8.

which raises: what's your input?

Upvotes: 2

Max
Max

Reputation: 16709

NSLog(@"urlString = %@",webStr); // its printing correct url string 

It's not printing the correct URL string. It's just printing the string. So if NSURL *webURL = [[NSURL alloc] initWithString:webStr] returns nil it means that your string is not valid URL.

Upvotes: 0

Related Questions