Objective c 目标-C中频vs开关

Objective c 目标-C中频vs开关,objective-c,if-statement,switch-statement,Objective C,If Statement,Switch Statement,我不明白为什么它与if语句一起工作,而不与开关一起工作: if ((int)typeOfHall == 1) {//LocalHall NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Game"]; NSPredicate *p = [NSPredicate predicateWithFormat:@"player_id == %@ ",[[NSUserDefaults standard

我不明白为什么它与
if
语句一起工作,而不与
开关一起工作:

if ((int)typeOfHall == 1) {//LocalHall
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Game"];
    NSPredicate *p = [NSPredicate predicateWithFormat:@"player_id == %@ ",[[NSUserDefaults standardUserDefaults] valueForKey:@"LoggedUserId"]];
    request.predicate = p;
}
下面的代码将不起作用(编译错误:
预期表达式
(在NSFetchRequest上)):

我不知道为什么会这样。我想switch和if语句是相似的,但在本例中,它们似乎非常不同


你知道为什么会发生这种情况吗?

如果你想在
案例中声明任何变量,你需要一个单独的作用域:

switch ((int)typeOfHall) {
    case 1:
    {   /* Introduce a scope ... */
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Game"]; 
        NSPredicate *p = [NSPredicate predicateWithFormat:@"player_id == %@ ",[[NSUserDefaults standardUserDefaults] valueForKey:@"LoggedUserId"]];
        request.predicate = p;
        break;
    }   /* ... that ends here. */
    default:
        break;

}
旁注:如果
LocalHall
是一个枚举值,则代码在没有强制转换的情况下可读性更强:

switch (typeOfHall) {
    case LocalHall:
    // ...

如果要在
案例中声明任何变量,则需要在
案例中使用单独的作用域:

switch ((int)typeOfHall) {
    case 1:
    {   /* Introduce a scope ... */
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Game"]; 
        NSPredicate *p = [NSPredicate predicateWithFormat:@"player_id == %@ ",[[NSUserDefaults standardUserDefaults] valueForKey:@"LoggedUserId"]];
        request.predicate = p;
        break;
    }   /* ... that ends here. */
    default:
        break;

}
旁注:如果
LocalHall
是一个枚举值,则代码在没有强制转换的情况下可读性更强:

switch (typeOfHall) {
    case LocalHall:
    // ...

不起作用怎么办?这个案子被忽略了?它进入默认分支?我在NSFetchRequest语句中发生的行中输入了一个错误。不管怎么说,我编辑了这个问题,并把错误放在括号里。你说“我不知道为什么会这样。”为什么会这样?你说它“不起作用”,但不要告诉我们出了什么问题。它不能编译吗?它是否给出了错误的结果?如果您需要代码方面的帮助,您必须发布一个连贯的问题。正如您在上面所看到的(错误:预期表达式(在NSFetchRequest上)):。好的,这是一个编译错误,我将编辑我的问题。怎么不工作?这个案子被忽略了?它进入默认分支?我在NSFetchRequest语句中发生的行中输入了一个错误。不管怎么说,我编辑了这个问题,并把错误放在括号里。你说“我不知道为什么会这样。”为什么会这样?你说它“不起作用”,但不要告诉我们出了什么问题。它不能编译吗?它是否给出了错误的结果?如果您需要代码方面的帮助,您必须发布一个连贯的问题。正如您在上面所看到的(错误:预期表达式(在NSFetchRequest上)):。好的,这是一个编译错误,我将编辑我的问题。谢谢,我错过了花括号!Python习惯..谢谢我错过了花括号!巨蟒习性。。