如何转换为NSObjects数组?

时间:2012-09-26 19:36:45

标签: objective-c arrays nsobject

来自Java,我写的是:

NSObject* obj[] = (NSObject* []) [self getResult];

编译器抱怨Cast to incomplete type 'NSObject *[]'

将对象强制转换为对象数组的正确方法是什么?

感谢。

3 个答案:

答案 0 :(得分:3)

鉴于您承认语言和库的新颖性:您通常会使用集合类型,例如NSArray。同样,-getResult会返回NSArray


另请注意,在ObjC中,类型转换实际上是将NSObject类型指针作为另一种类型传递 - 没有隐式提升(正如您在Java中看到的那样)。如果您想将NSObject转发为NSArray,可以使用NSArray * array = (NSArray*)[self getResult];。同样,没有促销 - 如果结果是NSString,那么您仍然在运行时处理NSString

Tommy的回答(+1)演示了如何创建包含一个元素的NSArray - 另一种编写它的方法,它不依赖于最新的编译器功能{​​{1 }}

答案 1 :(得分:1)

假设getResult返回单个对象,你想要的是一个对象数组,从Xcode 4.4开始,你可能会使用:

NSArray *objects = @[ [self getResult] ];

这将创建一个(不可变的)数组,其中只包含一个对象 - 无论getResult的结果如何。

在Objective-C数组中可能包含任何对象;你不能创建数组来保存特定类型的对象。

答案 2 :(得分:0)

您应该考虑使用内置的Array类。 NSArrayNSMutableArray