URL stringa di codificare in ios non aver
-
26-10-2019 - |
Domanda
Sto cercando di codificare una stringa URL nella mia iOS 5 applicazione utilizzando ARC.
Questo è come lo faccio:
- (NSString *)escape:(NSString *)text
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)text, NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
Ho poi chiamare con dati di test come questo:
NSLog([self escape:@"kalel///&&&???"]);
Ma l'uscita ottengo dal NSLog
è questa:
kalel0.0000000.0000000.00000022623F0.0000000.000000
Che proprio non mi sembra giusto, ma non importa ciò che non riesco a farlo bene
Soluzione
La vostra funzione escape
va bene. Il problema è in un certo senso si chiama NSLog
:
escape
produce la kalel%2F%2F%2F%26%26%26%3F%3F%3F
stringa per il vostro input. interpreta NSLog
questa stringa come una stringa di formato e stampa della spazzatura come numeri in virgola mobile a destra dopo parola kalel
!
Si dovrebbe sempre chiamare NSLog
con una costante stringa come primo argomento, per esempio:.
NSLog(@"%@", [self escape:@"kalel///&&&???"]);
P.S. Hai una perdita di memoria in escape
--- si dovrebbe return (__bridge_transfer NSString *)
in cui vengono trasferiti a nuovo oggetto CF allo spazio Objective C.