我的目标-C代码中有一个类似于此的枚举:
typedef enum {
FRUIT_APPLE = 1,
FRUIT_PEAR = 2,
FRUIT_BANANA = 3,
// etc.
} Fruit
我需要能够在方法中返回这些数组,如下所示:
@implementation FruitTest
static Fruit fruits[] = {FRUIT_APPLE, FRUIT_BANANA};
+(Fruit[]) fruits
{
return fruits;
}
@end
但是,这会产生编译错误:
#1 'fruits' declared as method returning an array
#2 Incompatible types in return
关于如何解决这个问题的任何想法? 谢谢!
答案 0 :(得分:2)
使用C代码,您不能像当前代码一样直接返回数组,但需要返回指针。在obj-c中,您还可以使用NSArray,您可以返回。
但是,你不能创建一个枚举数组,既不是int数组也不是NSInteger数组,你需要做fruits = [NSArray arrayWithObjects:[NSNumber numberWithInt:enumValue]];
您的代码应如下所示:
static NSArray *fruits;
+ (NSArray *)myFruits {
if (!fruits) {
fruits = [NSArray arrayWithObjects:[NSNumber numberWithInt:enumValue], nil];
}
}
答案 1 :(得分:1)
您必须将方法声明为返回指向Fruit
的指针,而不是数组。你可以这样做:
@implementation FruitTest
static Fruit fruits[] = {FRUIT_APPLE, FRUIT_BANANA};
+(Fruit *) fruits
{
return fruits;
}
@end