Question

Je suis en train de coder une chaîne url dans mon application iOS 5 en utilisant ARC.

Voici comment je le fais:

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

Je puis appeler avec des données de test comme celui-ci:

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

Mais la sortie que je reçois de la NSLog est la suivante:

kalel0.0000000.0000000.00000022623F0.0000000.000000

Cela ne semble tout simplement pas juste, mais peu importe ce que je ne peux pas l'obtenir droit

Était-ce utile?

La solution

Votre fonction escape est très bien. Le problème est d'une manière que vous appelez NSLog:

escape produit la chaîne kalel%2F%2F%2F%26%26%26%3F%3F%3F pour votre entrée. NSLog interprète cette chaîne comme une chaîne de format et imprime des ordures comme nombres à virgule flottante juste après mot kalel!

Vous devriez toujours appeler NSLog avec une constante de chaîne comme premier argument, par exemple:.

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

P.S. Vous avez une fuite de mémoire dans escape --- vous devez return (__bridge_transfer NSString *) que vous transférez RÉPARTIS objet CF à l'espace Objectif C.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top