Что такое __NSArrayI и __NSArrayM? Как преобразовать в NSArray?
Что такое __NSArrayI и __NSArrayM?
__ NSArrayI (или M) вызывает ошибку "непризнанного селектора".
Как преобразовать в NSArray?
Я проверил для синтаксического анализа json, twitter api.
http://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi
== > отлично работает. parsed object - класс NSCFDictionary.
(Этот словарь содержит класс __NSArrayM)
http://api.twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi
== > ошибка. анализируемый объект является классом __NSArrayM.
Ответы
Ответ 1
__NSArrayI
- это кодовое слово для неизменяемого массива, то есть "регулярный" NSArray
, который вы не можете изменить.
__NSArrayM
является кодовым словом для изменяемого массива, то есть NSMutableArray
. В NSMutableArray
вы можете добавлять и удалять элементы.
Ответ 2
Это классы частного api. Там - это проект, где вы можете увидеть все классы private api. Вы не можете использовать их в приложении для app store
, но иногда полезно также посмотреть, как получить доступ к объектам, а также к какому объекту он принадлежит. Они не могут быть преобразованы. Я думаю, что получение таких объектов внутри отладчика - это просто представление внутренних классов для классов, которые вы используете в своем проекте. Зная, что это за класс, вы также можете понять, где искать проблему внутри вашего кода.
Здесь вы можете увидеть короткий просмотр обоих:
__ NSArrayI
![enter image description here]()
__ NSArrayM
![enter image description here]()
Ответ 3
Это частные классы. Вы не должны обращаться к ним или, кроме того, конвертировать их.
Если я не ошибаюсь, NSArray
является подклассом _NSArray
.
Если вы добавляете/удаляете некоторые объекты в/из вашего массива, проверьте, что он имеет изменяемый тип: NSMutableArray