2014-06-12 75 views
0

我正在使用C++庫。所以我將我的.m文件轉換爲.mm文件將枚舉值分配給不兼容類型int

現在發生了什麼我無法設置枚舉值。

見枚舉

typedef enum{ 
    ImageSourceTypeCamera, 
    ImageSourceTypePhotoLibrary, 
    ImageSourceTypeNone 
    } 
ImageSourceType; 

//房產

@property(nonatomic,assign) ImageSourceType ImageSourceType; 

現在,當我使用這行的給我錯誤

self.ImageSourceType=2;// assigning to 'ImageProcessType' from incompaitable with 'int' 
+1

你能確認你的枚舉名爲ImageProcessType,抑或是ImageSourceType?你爲什麼不使用名字而不是數字? – Justin

+0

對不起,我有兩個枚舉混合我已經更新我的問題 – Mahavir

回答

1

嘗試:

self.ImageSourceType = ImageSourceTypePhotoLibrary 
+0

是它的工作。 – Mahavir

+0

如果有幫助,請提高並接受我的回答。謝謝。 –

+0

+1的答案。但我想設置爲0 1或2,因爲在我的delegete方法中,我正在傳遞標記值。所以我必須作出條件,如果我使用上面的代碼。如果不可能直接使用這個 – Mahavir

0

要使用數字而非名字枚舉,格式化定義,像這樣:

typedef enum{ 
    ImageSourceTypeCamera = 0, 
    ImageSourceTypePhotoLibrary = 1, 
    ImageSourceTypeNone = 2 
    } 
ImageSourceType; 

self.ImageSourceType = 0; //ImageSourceTypeCamera 
self.ImageSourceType = 1; //ImageSourceTypePhotoLibrary 
//etc... 

if (self.ImageSourceType == 0) { 
    //this is the same as (self.ImageSourceType == ImageSourceTypeCamera) 
+0

self.ImageSourceType = 0;當我寫這個它給我錯誤。我已經將我的.m文件轉換爲.mm這就是爲什麼 – Mahavir

+0

我看到了,我不使用C++,但必須是C++明確使用的約定。我總是使用枚舉的名稱。 – Justin

相關問題