NSURL URLWithString: дает ноль - PullRequest
       8

NSURL URLWithString: дает ноль

4 голосов
/ 22 февраля 2012

Пожалуйста, смотрите следующий код:

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];  

str дает мне http://MyDomain/Pics\\1.png, но url дает мне ноль .

Ответы [ 3 ]

18 голосов
/ 22 февраля 2012

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

[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
2 голосов
/ 03 марта 2016

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

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

str = [str stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols];

При этом создаются наборы символов, которые остаются без изменений, и запрашивается преобразование всего, что находится за пределами этих наборов символов, в% -ные кодированные значения.

2 голосов
/ 22 февраля 2012

Из документации методы URLWithString: принимают правильно сформированную строку URL:

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

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

...