NSURL stringWithUrl relativeToUrl return nilの対処法


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

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

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

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

■Good

[objc]
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]);
[/objc]

■Bad

[objc]
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]);
[/objc]

SNSでもご購読できます。

コメントを残す

*