私は自分のプログラムに書かれた非常に悪いコードを持っています。私はObjective CとiOSプラットフォームを学んでいるので、ただ遊んでいました。私は、NSMutableArrayインスタンスへのobjectForKeyへのメッセージの送信、それは動作します!不思議ですか?
私はこのようなNSMutableArray
、
placeInfo = [NSMutableArray array];
を作成していなかったと、後に自分のコードに比べて、私はこのような何かをやっている、基本的に私はGoogleの場所APIレスポンス(JSON)を操作しています。
NSDictionary *results = [responseString JSONValue];
placeInfo = [results objectForKey:@"result"];
self.phoneNumber = (NSString *)[placeInfo objectForKey:@"formatted_phone_number"]; // In this line compiler warns me that NSMutableArray might not response to this.
私は、ドキュメントをチェックしますが、私はNSMutableArray
にobjectForKey見つけることができませんでした。
- だからこそ、どうしてですか?なぜ私のコードがクラッシュしていないのですか?なぜ "formatted_phone_number"キーで電話番号を返すのですか?
EDIT
最初の答えの後、私は私のコードと、このようにキャスト追加タイプを編集しているが、それはまだ動作します。
NSDictionary *results = [responseString JSONValue];
placeInfo = (NSMutableArray *)[results objectForKey:@"result"];
self.phoneNumber = (NSString *)[placeInfo objectForKey:@"formatted_phone_number"];
placeInfoは何でも[results objectForKey:@ "result"]が返すもので、おそらくNSArrayではありません。あなたはデバッガでそれを調べましたか? –
@VladimirGritsenko、ええ、それは多くの理解を助けました、ありがとう:) – doNotCheckMyBlog
ここでの鍵は、Objective-Cが動作する方法です。あなたが思っているかもしれないタイプやそれにキャストしたタイプにかかわらず、それを伝えるメッセージをオブジェクトに送ります。 'NSLog(@"%@ "、placeInfo);'のような行をコードに追加すると、実行時に実際にどのような型のオブジェクトが表示されるのでしょうか? – paulbailey