Quando si lavora con i dati JSON tendo ad essere molto attenti. Diciamo che ho un JSON deserializzato in un NSDictionary. Con ciò, ho bisogno di estrarre una stringa associata alla chiave "URL" dal dizionario e trasformarla in un NSURL. Inoltre, non sono sicuro al 100% nel JSON o nel valore stringa.
vorrei fare qualcosa di simile:
NSURL *URL = nil;
id URLObject = [JSON valueForKey:@"URL"];
if ([URLObject isKindOfClass:[NSString class]] && [URLObject length] > 0) {
URLObject = [URLObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URLObject = [URLObject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URL = [NSURL URLWithString:URLObject];
}
Dopo questo, URL avrà o un nullo o un URL valido. -isKindOfClass: elimina il valore come NSDictionary, NSArray, NSNumber o NSNull. -length> 0 filtra la stringa vuota (che, come sai, può rovinare un NSURL). L'ulteriore paranoia della decodifica, quindi la ricodifica degli URL di escape gestisce gli URL parzialmente codificati.
fonte
2012-05-17 14:26:40
E 'già analizzato? L'URL è NSURL o NSString? –
URL è un URL. – Jones
Sì, ma che tipo di oggetto è? Dalla risposta accettata sembra che fosse una NSString –