Objective c 将整数强制转换锁定为枚举类型或至少显示警告

Objective c 将整数强制转换锁定为枚举类型或至少显示警告,objective-c,enums,compiler-warnings,Objective C,Enums,Compiler Warnings,当我提供整数作为需要某种枚举类型的参数时,有没有办法显示警告 // Enum definition typedef NS_ENUM(NSUInteger, TVScheduleSortBy) { TVScheduleSortByDisplayOrder, TVScheduleSortBySlotStartDate, TVScheduleSortBySlotEndDate }; // Method declaration - (void)s

当我提供整数作为需要某种枚举类型的参数时,有没有办法显示警告

// 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)];
打开“隐式枚举转换”警告。默认情况下是关闭的


如何查找:单击项目,然后在目标“build settings”上,在搜索字段中键入“enum”,查找三个与enum相关的警告

使用
typedef enum
而不是
NS_enum(NSUInteger,…)
怎么样?这种方法结合了上述所有方法的优点,甚至为编译器提供了类型检查和switch语句完整性的提示。没有关系;我刚刚在Linux上使用gcc进行了尝试,但它没有提供警告。这没关系,但只有当我将不同的枚举作为参数传递时,此警告才会起作用,因此当我尝试调用[GetSelectionReqData sortBy:(EventSortByDisplayOrder)order:(SortDataOrderDefault)]时,它会显示警告;我期望TVScheduleSortBy,但我提供了EventSortBy,但当我想使用这样的整数时,它不会显示任何警告:[对象sortBy:(10)order:(SortDataOrderDefault)];