Objective-C从方法返回枚举数组

时间:2010-10-01 16:56:01

标签: objective-c arrays enums

我的目标-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

关于如何解决这个问题的任何想法? 谢谢!

2 个答案:

答案 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