NSURL stringWithUrl relativeToUrl return nilの対処法


[NSURL stringWithUrl: relativeToUrl ] return nilの対処法を紹介します。


■解決策

相対パスにスペースが入っている場合、エスケープすると解決します。

NSString *relativeString = [@"/logtopickeywords.cms?query=test matches" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

上記のコードのようにNSStringのstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncodingを相対パスに追加して下さい。

■関連キーワード

NSURL stringWithUrl
NSURL encode
NSURL decode
(ボタンをクリックすると、検索管理サービス「アトサク」にキーワードを登録できます。)
アトサクについては、本家ページをご参照下さい

■Good

NSString *relativeString = [@"/logtopickeywords.cms?query=test matches" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"relativeString is %@",relativeString);
NSString *originalPath = @"http://localhost/original/?original";

NSURL *newUrl = [NSURL URLWithString:relativeString relativeToURL:[NSURL URLWithString:originalPath]];

NSLog(@"new URL is %@",[newUrl absoluteString]);

STAssertTrue([[newUrl absoluteString] length] > 0,@"newUrl is %@",[newUrl absoluteString]);

■Bad

NSString *relativeString = @"/logtopickeywords.cms?query=test matches";
NSString *originalPath = @"http://localhost/original/?original";
NSURL *newUrl = [NSURLURLWithString:relativeString relativeToURL:[NSURLURLWithString:originalPath]];
STAssertTrue([[newUrl absoluteString] length] > 0,@"newUrl is %@",[newUrl absoluteString]);
[sc:採用情報へのリンク]
カテゴリー: objective-C   作成者: 星野 善彦 パーマリンク

星野 善彦 の紹介

node.js / Objective-Cにて、アトサクという検索管理サービスを作っています。 本ブログでは、トラブルシューティングとともに、参考になるキーワードを紹介します。 もし、気になるキーワードがあれば、アトサクに追加して頂ければ幸いです。