JSON データを扱うとき、私は非常に注意する傾向があります。NSDictionary に逆シリアル化された JSON があるとします。そこで、キー「URL」に関連付けられた文字列を辞書から取り出して、NSURL に変換する必要があります。さらに、JSON や文字列値に 100% の自信があるわけではありません。
私はこのようなことをします:
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];
}
この後、URL は nil または有効な URL になります。-isKindOfClass: NSDictionary、NSArray、NSNumber、または NSNull である値を除外します。-length > 0 は空の文字列を除外します (ご存知のように、NSURL を台無しにする可能性があります)。部分的にエンコードされた URL を処理する URL エスケープをデコードしてから再エンコードする余分なパラノイア。