0

来自Java,我正在写:

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

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

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

谢谢。

4

3 回答 3

3

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


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

Tommy 的回答 (+1) 演示了如何创建一个NSArray包含一个元素的元素——另一种编写方式,它不依赖于最新的编译器功能是NSArray * array = [NSArray arrayWithObject:[self getResult]];.

于 2012-09-26T19:40:25.553 回答
1

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

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

这将创建一个(不可变)数组,其中只包含一个对象——无论结果getResult是什么。

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

于 2012-09-26T19:44:46.717 回答
0

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

于 2012-09-26T19:42:47.330 回答