__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类。
答案 0 :(得分:73)
__NSArrayI
是不可变数组的代码字 - 也就是说,您无法更改的“常规”NSArray
。
__NSArrayM
是可变数组的代码字 - 即NSMutableArray
。在NSMutableArray
中,您可以添加和删除项目。
答案 1 :(得分:5)
这些是私人api的类。有is a project,您可以在其中查看私有API的所有类。您不能在app store
的应用程序中使用它们,但有时也可以看到如何访问对象以及它是什么类型的对象。他们无法转换。我认为,在调试器中获取这些类型的对象只是内部类的表示,对于您在项目中使用的类。知道它是什么类,让您也了解在代码中查找问题的位置。
在这里您可以看到两者的简短查找:
<强> __ NSArrayI 强>
<强> __ NSArrayM 强>
答案 2 :(得分:2)
这是私人课程。你不应该想要访问它们或者转换它们。
如果我没有弄错,NSArray
是_NSArray
的子类。
如果要在数组中添加/删除某些对象,请检查它是否为可变类型:NSMutableArray