Podczas pracy z danymi JSON I wydają się być bardzo ostrożny. Powiedzmy, że mam JSON przekształcone do postaci NSDictionary. W tym celu muszę wyciągnąć ciąg ze słowa kluczowego "URL" ze słownika i przekształcić go w NSURL. Ponadto nie jestem w 100% pewny wartości JSON ani wartości ciągu.
chciałbym zrobić coś takiego:
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];
}
po tym, URL będzie mieć albo zero lub ważnego adresu URL. -isKindOfClass: wyodrębnia wartość będącą NSDictionary, NSArray, NSNumber lub NSNull. -Length> 0 odfiltrowuje pusty ciąg znaków (który, jak wiesz, może zepsuć NSURL). Dodatkowa paranoja dekodowania, a następnie ponowne kodowanie adresów URL obsługuje częściowo zakodowane adresy URL.
Czy to już analizowany? Czy adres URL to NSURL lub NSString? –
URL to adres URL. – Jones
Tak, ale jaki to jest obiekt? Z zaakceptowanej odpowiedzi wygląda na to, że był to NSString –