什么是__NSArrayI和__NSArrayM? 如何转换为NSArray?
什么是__NSArrayI和__NSArrayM?
__NSArrayI(或M)导致“无法识别的select器”错误。
如何转换为NSArray?
我做了testing来parsingjson,twitter api。
http://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi
==>正常工作。 parsing对象是NSCFDictionary类。 (这个字典包含__NSArrayM类)
http://api.twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi
==>错误。 parsing对象是__NSArrayM类。
__NSArrayI
是一个不可__NSArrayI
的代码字 – 也就是说,你不能改变的“常规” NSArray
。
__NSArrayM
是一个可变数组的代码字 – 也就是NSMutableArray
。 在NSMutableArray
,你可以添加和删除项目。
这些是私人API的类。 有一个项目 ,你可以看到所有类的私人API。 您不能在app store
的应用程序中使用它们,但有时候也会看到如何访问对象以及它是什么types的对象。 他们不能转换。 我认为,在debugging器中获取这些对象只是内部类的表示,对于您在项目中使用的类。 知道它是什么类,让你也知道在你的代码里面寻找问题的地方。
在这里你可以看到两个简短的查询:
__NSArrayI
__NSArrayM
这是私人class。 你不应该想要访问它们,或者转换它们。
如果我没有弄错NSArray
是_NSArray
子类。
如果你正在向数组中添加/删除一些对象,请检查它是否为可变types: NSMutableArray