代码之家  ›  专栏  ›  技术社区  ›  Richard J. Ross III

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

  •  2
  • Richard J. Ross III  · 技术社区  · 15 年前

    我的objective-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 回复  |  直到 15 年前
        1
  •  2
  •   vodkhang    15 年前
    • 对于C代码,不能像当前代码那样直接返回数组,但需要返回指针。在obj-c中,也可以使用NSArray,它可以返回。

    • fruits = [NSArray arrayWithObjects:[NSNumber numberWithInt:enumValue]];

    您的代码应该如下所示:

    static NSArray *fruits;
    
    + (NSArray *)myFruits {
      if (!fruits) {
        fruits = [NSArray arrayWithObjects:[NSNumber numberWithInt:enumValue], nil];
      }
    }
    
        2
  •  1
  •   mipadi    15 年前

    必须声明该方法返回指向 Fruit ,而不是数组。您可以这样做:

    @implementation FruitTest
    
    static Fruit fruits[] = {FRUIT_APPLE, FRUIT_BANANA};
    
    +(Fruit *) fruits
    {
        return fruits;
    } 
    
    @end