/ / NSDictionaryで添え字を使用して値にアクセスする場合とvalueForKeyのみを使用する場合の違い-ios、objective-c、nsdictionary

NSDictionaryで添字を使用して値をアクセスすることとvalueForKeyだけを使用していることの違い - ios、objective-c、nsdictionary

次の行があります。

_driverName.text = [[[responseDictionary valueForKey:@"response" ] valueForKey:@"driverinfo"]valueForKey:@"name"];

しかし、私はこのようにサブスクリプションを使用することでこの行を縮小できると思います:

_driverName.text = responseDictionary[@"response" ][@"driverinfo"][@"name"];

よりクリーンで読みやすいようです。 付随的な影響なしにこの構文を適用することは可能ですか? 前もって感謝します

回答:

回答№1は2

の誤用を無視する valueForKey: (つかいます objectForKey:)、質問ではどちらの例も使用しないでください。どちらも、データ構造が思ったとおりではないため、問題が発生したときにデバッグが不可能になるという問題があります。

時間はかかりますが、最終的には各アクセスを別々の行に分割する価値があります。

NSDictionary *response = responseDictionary[@"response"];
NSDictionary *driverInfo = response[@"driverInfo"];
_driverName.text = driverInfo[@"name"];

ただし、最新の添え字構文を使用すると、使用するよりも常に簡単でエラーが発生しにくくなります。 objectForKey: 誤って使用しないようにします valueForKey:.