表达式不是iOS中的整数常量表达式

前端之家收集整理的这篇文章主要介绍了表达式不是iOS中的整数常量表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的代码中这样做,它给了我这个错误:表达式不是一个整数常量表达式

码:

//Tag for Database
#define kInsertIntoDatabase            @"Insert"
#define kDeleteFromDatabase            @"Delete"
#define kUpdateIntoDatabase            @"Update"
#define kQueryDatabase                 @"Query"


-(void)documentIsReady:(NSString *)sqlmethod{
    if(document.documentState == UIDocumentStateNormal)
    {
        context = document.managedObjectContext;
    }

    switch (sqlmethod) {
        case kInsertIntoDatabase:
            [self insertCoreDataModel];
            break;
        case kDeleteFromDatabase:
            [self deleteCoreDataModel];
            break;
        case kUpdateIntoDatabase:
            [self updateCoreDataModel];
            break;
        case kDeleteFromDatabase:
            [self deleteCoreDataModel];
            break;
        default:
            break;
    }

}

怎么了?不确定有什么问题.需要一些指导……

解决方法

如果你想使用这个开关,你应该选择一个enum,它可以让你在切换整数的同时保持可读性.

试试这个:

typedef enum {
    DatabaseMainFunctions_InsertIntoDatabase,DatabaseMainFunctions_DeleteFromDatabase,DatabaseMainFunctions_UpdateInto,DatabaseMainFunctions_Query
}DatabaseMainFunctions;

然后像

switch (sqlmethod) {
    case DatabaseMainFunctions_InsertIntoDatabase:
        [self insertCoreDataModel];
        break;
    case DatabaseMainFunctions_DeleteFromDatabase:
        [self deleteCoreDataModel];
        break;
    case DatabaseMainFunctions_UpdateInto:
        [self updateCoreDataModel];
        break;
    case DatabaseMainFunctions_Query:
        [self deleteCoreDataModel];
        break;
    default:
        break;
}

注意,您的案例删除在您的示例中写了两次,可能是一些复制粘贴错误.

在Nicolas Bouilleaud的github上有一个目标c开关,用于字符串(实际上是对象):objcswitch

猜你在找的iOS相关文章