例えば「あいうえお」で検索した結果をwebViewで表示しようと以下を実行してみるとurl = nil; になってしまう件。
sample_old.m
NSString *baseString = @"あいうえお";
NSString *urlString = [NSString
stringWithFormat:@"https://www.google.co.jp/#q=%@",
baseString];
NSURL *url = [NSURL URLWithString: urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:urlRequest];
本家のクラスリファレンスを見るに、NSURLはRFC 1738 と 1808に準拠してないといけないらしく、平たく言うとURLencodeされている必要がありますよ、と。 そんな訳で、修正してうまくいったコードがこちら。
sample_new.m
NSString *baseString = @"あいうえお";
NSString *escapedString =
(NSString *)CFBridgingRelease(
CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef) baseString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
NSString *url = [NSString
stringWithFormat:@"https://www.google.co.jp/#q=%@",
escapedString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:urlRequest];