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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top