简单的问题......我对我的代码有一些评论并删除它们并收到错误。几个小时后,我到了源头。
此代码有效:
switch (indexPath.row) {
case 0:
NSLog(@"case 0");
break;
case 1: // Clients
NSLog(@"case 1");
ViewClientListTableController *viewListTableController = [[ViewClientListTableController alloc] init];//]WithNibName:@"BrowseViewController" bundle:nil];
viewListTableController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:viewListTableController animated:YES];
//[self.navigationController setNavigationBarHidden:NO];
[viewListTableController release];
break;
}
下一个(通过删除NSLog(@“case 1”);)不起作用:
switch (indexPath.row) {
case 0:
NSLog(@"case 0");
break;
case 1: // Clients
ViewClientListTableController *viewListTableController = [[ViewClientListTableController alloc] init];//]WithNibName:@"BrowseViewController" bundle:nil];
viewListTableController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:viewListTableController animated:YES];
//[self.navigationController setNavigationBarHidden:NO];
[viewListTableController release];
break;
}
如您所见,只有NSLog线路消失了。编译器给了我2个错误:
RootViewController.m:212:错误:'ViewClientListTableController'之前的预期表达式
RootViewController.m:213:错误:'viewListTableController'未声明(首次在此函数中使用)
当然,一个答案是离开NSLog线,但是真的......为什么会发生这个错误?
答案 0 :(得分:3)
switch语句经常在其case标签中声明变量时遇到问题。我打赌
{
ViewClientListTableController *viewListTableController = [[ViewClientListTableController alloc] init];//]WithNibName:@"BrowseViewController" bundle:nil];
viewListTableController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:viewListTableController animated:YES];
//[self.navigationController setNavigationBarHidden:NO];
[viewListTableController release];
}
适用于案例1: - NSLog宏可能具有类似效果的扩展。
答案 1 :(得分:1)
我一直都有这个麻烦。我想我们不能在案例标签内的第一行声明一个新的变量,除非我们有一个括号{}
case 1: // Clients
{
ViewClientListTableController *viewListTableController = [[ViewClientListTableController alloc] init];//]WithNibName:@"BrowseViewController" bundle:nil];
viewListTableController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:viewListTableController animated:YES];
//[self.navigationController setNavigationBarHidden:NO];
[viewListTableController release];
break;
}
答案 2 :(得分:0)
使用switch-case语句时,我也遇到了这个问题。如果你在“ViewClientListTableController * viewListTableController = [[ViewClientListTableController alloc] init]”之前写了一个分号;“句子如“; ViewClientListTableController * viewListTableController = [[ViewClientListTableController alloc] init];”,你可能会看到没有错误了。我不确切地知道原因,但它纠正了这个问题。