web-dev-qa-db-fra.com

Qu'est-ce que __nsarrayi et __nsarraym? Comment convertir en Nsarray?

Qu'est-ce que __nsarrayi et __nsarraym?

__Nsarrayi (ou m) Cause une erreur "Sélecteur non reconnue".

Comment convertir en Nsarray?


J'ai testé pour analyser JSON, Twitter API.

http://api.twitter.com/1/flowers/ids.json?cursor=-&screen_name=TwitterAPI

==> fonctionne bien. L'objet analysé est NSCFDictionary Class. (Ce dictionnaire contient __nsarraym classe)

http://api.twitter.com/1/statats/user_timeline.json?&screen_name=TwitterAPI

==> erreur. L'objet analysé est __nsarraym classe.

34
ChangUZ

__NSArrayI est un mot de code pour un tableau immuable - c'est-à-dire un "régulier" NSArray que vous ne pouvez pas changer.

__NSArrayM est un mot de code pour une matrice mutable - c'est-à-dire NSMutableArray. Dans NSMutableArray, vous pouvez ajouter et supprimer des éléments.

77
Jason

Ce sont des cours de l'API privé. Là-bas est un projet où vous pouvez voir toutes les classes de l'API privé. Vous n'êtes pas autorisé à les utiliser dans une application pour le app store Mais parfois, il est utile de voir comment accéder aux objets et aussi quel type d'objet c'est. Ils ne peuvent pas être convertis. Je pense que ce type d'objets à l'intérieur du débogueur n'est que la représentation des classes internes, pour les classes que vous utilisez dans votre projet. Savoir quel genre de classe il est, vous permet également de comprendre où rechercher le problème de votre code.

Ici, vous pouvez voir une brève recherche des deux:

__ Nsarrayi

enter image description here

__ nsarraym

enter image description here

5
Alex Cio

Ce sont des cours privés. Vous ne devriez pas vouloir y accéder ou en outre les convertir.

Si je ne me trompe pas NSArray est la sous-classe de _NSArray.

Si vous ajoutez/supprimez des objets à/à partir de votre tableau, vérifiez qu'il est de type mutable: NSMutableArray

2
Nekto