![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguoiscFoLD6NuhnEsTgnBdXh4ijGeVWNIi4lVYtSlAM6RqnyJbLb4fN3zKz5sRvuYUMktnmBfb-Bj3TFeFbfwsCiNdLJDcpWo89DrMqCHfqggVcyrZaZWGvIKn304iVslOOgP8MeF5kp8c/s320/url_encoding.jpg)
今日はURLエンコーディングに関する簡単なメモを。
まず、今までのようにCFStringRefを使ってエンコード
+ (NSString *)urlEncode:(NSString *)url { return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)url, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8); }
したら、下のようなエラーが出ました。
Cast of C pointer type 'CFStringRef' (aka 'const struct __CFString *') to Objective-C pointer type 'NSString *' requires a bridged cast
ARC使ってると出るみたいですね。なので、下のように変更
+(NSString *)urlEncode:(NSString *)url { return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)url, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8); }
__bridgeを追加しました。これだけでうまく動きます。
0 件のコメント:
コメントを投稿