2012-01-10 2 views
1

ARCを使用しているiOS 5アプリケーションで文字列をURLエンコードしようとしています。iosでURLエンコード文字列が失敗する

これは私がそれを行う方法です:

NSLog([self escape:@"kalel///&&&???"]); 

しかし、私は NSLogから取得出力は次のとおりです:

- (NSString *)escape:(NSString *)text 
{ 
    return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
              (__bridge CFStringRef)text, NULL, 
              (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
              kCFStringEncodingUTF8); 
} 

私は、このようなテストデータとそれを呼び出す

kalel0.0000000.0000000.00000022623F0.0000000.000000 

それはちょうど正しいと思われませんが、私はそれを正しく得ることはできません

答えて

2

escape機能は正常です。問題はあなたの電話番号NSLogにあります。

escapeは入力用にkalel%2F%2F%2F%26%26%26%3F%3F%3Fという文字列を生成します。 NSLogは、この文字列を書式文字列として解釈し、kalelの直後に浮動小数点数としてガベージを表示します。

あなたは常に例えば、最初の引数として文字列定数でNSLogを呼び出す必要があります。:

NSLog(@"%@", [self escape:@"kalel///&&&???"]); 

P.S.escapeにメモリリークがあります。保持CFオブジェクトをObjective Cスペースに転送するとreturn (__bridge_transfer NSString *)になるはずです。

+0

素晴らしい、ありがとう! –

関連する問題