Frage

Ich versuche, eine Zeichenfolge in meiner iOS 5 -App mit ARC zu codieren.

So mache ich es:

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

Ich nenne es dann mit solchen Testdaten:

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

Aber die Ausgabe, die ich von der bekomme NSLog ist das:

kalel0.0000000.0000000.00000022623F0.0000000.000000

Das scheint einfach nicht richtig zu sein, aber egal was ich nicht richtig machen kann

War es hilfreich?

Lösung

Dein escape Funktion ist in Ordnung. Das Problem ist in einer Weise, die Sie anrufen NSLog:

escape produziert die Schnur kalel%2F%2F%2F%26%26%26%3F%3F%3F Für Ihre Eingabe. NSLog interpretiert diese Zeichenfolge als Formatzeichenfolge und druckt einen Müll als schwimmende Punktnummern gleich danach kalel Wort!

Sie sollten immer anrufen NSLog Mit einer Stringkonstante als erstes Argument, z. B.:

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

Ps Sie haben ein Speicherleck in escape --- Du solltest return (__bridge_transfer NSString *) Wenn Sie eingehaltenes CF -Objekt in den objektiven C -Speicherplatz übertragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top