0

我输入了以下内容,但是显示了一些错误,这是 case 0 之后的行中的预期表达式,并且使用了未声明的标识符“bundle”。谁能告诉我问题是什么以及如何解决?

非常感谢你。

-(IBAction) segmentedControlIndexChanged{
    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0:
            NSBundle *bundle = [[NSBundle alloc ]init];
            NSString *path = [bundle pathForResource:@"HK" ofType:@"plist"];
            placeArray = [[NSArray alloc] initWithContentsOfFile:path];
            break;            
        case 1:
            NSLog(@"case 1");
            break;
        case 2:
            NSLog(@"case 2");
            break;
        case 3:
            NSLog(@"case 3");
            break;
        case 4:
            NSLog(@"case 4");
            break;
        default:
            break;
    }
}
4

3 回答 3

4

您需要一些括号,以便编译器知道要应用的范围:

case 0:
{
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *path = [bundle pathForResource:@"HK" ofType:@"plist"];
    placeArray = [[NSArray alloc] initWithContentsOfFile:path];
    break; 
}

另外,不要使用alloc initon NSBundle。您要么想获得mainBundle(如上所述),要么专门在您的应用程序中获得一些其他捆绑包。

于 2013-06-23T15:49:50.333 回答
1

您在块的第一行有一个变量声明case。将块包裹在大括号中:

case 0:
{
    NSBundle *bundle = [[NSBundle alloc ]init];
    NSString *path = [bundle pathForResource:@"HK" ofType:@"plist"];
    placeArray = [[NSArray alloc] initWithContentsOfFile:path];
    break;
}

请参阅这个 SO 问题

于 2013-06-23T15:50:42.777 回答
0
NSBundle *bundle = [NSBundle mainBundle];

是正确的方法。

于 2013-06-23T15:47:59.347 回答