2012-02-22 2 views
4

Пожалуйста, смотрите код ниже:NSURL URLWithString: давая ноль

UIImage *image; 
NSString *str = [[[Data getInstance]arrPic]objectAtIndex:rowIndex]; 
NSLog(str); 
NSURL *url = [NSURL URLWithString:str]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
image = [UIImage imageWithData:data]; 

ул дает мне http://MyDomain/Pics\\1.png но URL дает мне ноль.

+3

Пожалуйста, дайте мне знать, почему downvote? – Nitish

+0

Да Нитиш, ты прав ... кто-нибудь скажет, почему сбитый? –

ответ

18

Просто попробуйте использовать это,

[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
+1

Это устарело в iOS 9.0. – Jonny

+0

это разрывает URL-адрес, если в нем есть #, преобразовывая # в% 2 –

+0

. Попробуйте это: [string urlEncodeUsingNSUTF8StringEncoding]; –

2

Из документации, то URLWithString: методы занимает хорошо сформированную URL строку:

Этот метод ожидает URLString содержать любые необходимые процентов маскирование , которые являются:: ',' ','% ',' # ','; 'и' @ '. Обратите внимание, что экраны «%» транслируются через UTF-8.

Я предлагаю вам повторить попытку с использованием метода NSString(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding;.

2

Начиная с iOS9, stringByAddingPercentEscapesUsingEncoding устарел. Чтобы благополучно избежать строку URL, используйте:

NSMutableCharacterSet *alphaNumSymbols = [NSMutableCharacterSet characterSetWithCharactersInString:@"[email protected]#$&*()-_+=[]:;',/?."]; 
[alphaNumSymbols formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]]; 

str = [str stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols]; 

Это создает наборы символов, чтобы сохранить как и спрашивает все вне этих CharacterSets быть преобразованы в% процентов закодированных значений.