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