質問

アプリケーションに次のコードがあります。

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];

pathOfThumbNailには次のパスがあります


http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B .jpg


Safariブラウザで上記のパスを開くと、パスが自動的に変更されます&画像が正常に表示されました。

http://70.84.58.40/projects/igolf/TipThumb/GOLF% 2058B.jpg


しかし、iPhoneでは、パスにスペースがあるため、nsdataに画像が読み込まれません。

役に立ちましたか?

解決

使用:stringByAddingPercentEscapesUsingEncoding:

指定されたエンコードを使用して受信者の表現を返し、受信者を正当なURL文字列に変換するために必要なパーセントエスケープを決定します。

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

エンコードを使用して受信者を表現し、受信者を有効なURL文字列に変換するために必要なパーセントエスケープを決定します。エンコードが特定の文字をエンコードできない場合、nilを返します

@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出力:

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'  

他のヒント

swift 3.0のアプローチ(stringByAddingPercentEscapesUsingEncodingおよびstringByAddingPercentEncodingWithAllowedCharactersは非推奨になりました):

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

stringByAddingPercentEscapesUsingEncoding はiOS 9.0で非推奨になりました。代わりに stringByAddingPercentEncodingWithAllowedCharacters を使用することをお勧めします。

これは>のObjective-Cコードです。 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];
enter code here

NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top