
今日は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 件のコメント:
コメントを投稿