質問

ARCを使用してiOS 5アプリで文字列をEncodeしようとしています。

これが私がそれをする方法です:

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

次に、次のようなテストデータでそれを呼び出します。

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

しかし、私が得る出力 NSLog これは:

kalel0.0000000.0000000.00000022623F0.0000000.000000

それは正しくないように思えますが、何が正しくできないとしても

役に立ちましたか?

解決

君の escape 機能は問題ありません。問題は、あなたが呼ぶ方法です NSLog:

escape 文字列を生成します kalel%2F%2F%2F%26%26%26%3F%3F%3F あなたの入力のために。 NSLog この文字列をフォーマット文字列として解釈し、すぐにいくつかのゴミを浮動小数点数として印刷します kalel 語!

常に電話する必要があります NSLog 最初の引数として文字列定数があります、例:

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

メモリリークがあります escape - - あなたがすべき return (__bridge_transfer NSString *) CFオブジェクトを客観的なc空間に転送するとき。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top