__NSArrayIおよび__NSArrayMとは何ですか?
__NSArrayI(またはM)は「認識できないセレクター」エラーを引き起こします。
NSArrayに変換する方法は?
Json、Twitter apiを解析するためのテストを行いました。
http://api.Twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi
==>正常に動作します。解析されたオブジェクトはNSCFDictionaryクラスです。 (この辞書には__NSArrayMクラスが含まれています)
http://api.Twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi
==>エラー。解析されたオブジェクトは__NSArrayMクラスです。
__NSArrayI
は不変配列のコードワードです。つまり、「通常の」NSArray
は変更できません。
__NSArrayM
は、可変配列のコードワードです。つまり、NSMutableArray
です。 NSMutableArray
では、アイテムを追加および削除できます。
これらはプライベートAPIのクラスです。そこには プロジェクトです があり、プライベートAPIのすべてのクラスを確認できます。アプリ内でapp store
を使用することは許可されていませんが、オブジェクトへのアクセス方法やオブジェクトの種類を確認することも役立つ場合があります。変換できません。デバッガー内でこれらの種類のオブジェクトを取得することは、プロジェクト内で使用しているクラスの内部クラスの表現にすぎないと思います。クラスの種類を知ることで、コード内のどこに問題があるのかを理解することもできます。
ここでは両方の短いルックアップを見ることができます:
__ NSArrayI
__ NSArrayM
プライベートクラスです。あなたはそれらにアクセスしたり、さらにそれらを変換したりすべきではありません。
誤解しない限り、NSArray
は_NSArray
のサブクラスです。
配列にオブジェクトを追加したり、配列からオブジェクトを削除したりする場合は、それが可変タイプであることを確認してください:NSMutableArray