2015-12-18 52 views
0

當我提供整數作爲參數需要某些枚舉類型時,是否有方法顯示警告?鎖整型轉換爲枚舉類型或至少顯示警告

// Enum definition 
typedef NS_ENUM(NSUInteger, TVScheduleSortBy) { 
     TVScheduleSortByDisplayOrder, 
     TVScheduleSortBySlotStartDate, 
     TVScheduleSortBySlotEndDate 
    }; 

// Method declaration 
- (void)sortBy:(TVScheduleSortBy)sortBy order:(SortDataOrder)order; 

// Good case .. no warnings 
[object sortBy:(TVScheduleSortByDisplayOrder) order:(SortDataOrderDefault)]; 

// Bad case .. I should get at least compiler warning 
[object sortBy:(10) order:(SortDataOrderDefault)]; 
+0

如何使用'typedef enum'而不是'NS_ENUM(NSUInteger,...)'? – trojanfoe

+0

這種方法結合了上述所有方法中的優點,甚至爲編譯器提供了類型檢查和切換語句完整性的提示。 http://nshipster.com/ns_enum-ns_options/ – pawelini1

+0

你試過了嗎? – trojanfoe

回答

0

打開「隱式枚舉轉換」的警告。它默認關閉。

如何找到它:點擊項目,然後在目標上,「構建設置」,在搜索字段中輸入「enum」,找到三個枚舉相關的警告。

+0

沒關係,但是這個警告只在我傳入不同的枚舉作爲參數時才起作用,所以當我嘗試調用[getSelectionsReqData sortBy:(EventSortByDisplayOrder)order:(SortDataOrderDefault)]時會顯示警告;我期望TVScheduleSortBy,但我提供EventSortBy,但是當我想像這樣使用Integer時,它不顯示警告:[object sortBy:(10)order:(SortDataOrderDefault)]; – pawelini1

相關問題