2013-06-05 123 views
3

下面是我在球类的头文件中创建的枚举:错误时枚举值

typedef enum { 
redBall = 0, 
blueBall = 1, 
greenBall = 2 

}ballTypes; 

和接口:

ballTypes ballType; 

在Ball.mm的init方法我初始化ballType如下:

ballType = 0; 

我得到以下错误:

Assigning to 'ballTypes' from incompatible type 'int' 

我该如何解决这个问题?

+0

可能重复http://stackoverflow.com/questions/707512/what-is-a-typedef-enum-in-objective-c?rq=1 – voromax

+0

@voromax它可以是相关的,甚至可能是重复的,但不是一个确切的复制... – fotanus

回答

3

枚举应与NS_ENUM宏定义:

typedef NS_ENUM(NSInteger, BallType) { 
    BallTypeNone = 0, 
    BallTypeRed = 1, 
    BallTypeBlue = 2, 
    BallTypeGreen = 3 
}; 

BallType ballType; 

ballType = BallTypeNone; 

通常名称以大写字母和eac开头h值是附加了有意义的描述的名称。

+0

即使它解决了问题并引入了一个良好的实践(感谢顺便说一下,我不知道NS_ENUM),这个问题的_real_问题最好由trojanfoe的答案imho来解决。 –

1

BallTypes是一种类型,int(字面值0)是一种类型,它们不能混合而不投射。

创建无效的球型和使用:

typedef enum { 
    noBall, 
    redBall, 
    blueBall, 
    greenBall 
} ballTypes; 

... 

ballType = noBall; 

注:传统枚举的capitialized ...