Can I declare variables inside an Objective-C switch statement?

objective-c, switch-statement

Solution

I don't have a suitable Objective-C compiler on hand, but as long as the C constructs are identical:

`switch { … }` gives you one block-level scope, not one for each `case`. Declaring a variable anywhere other than the beginning of the scope is illegal, and inside a `switch` is especially dangerous because its initialization may be jumped over.

Do either of the following resolve the issue?

NSString *viewDataKey;
switch (cellNumber) {
    case 1:
        viewDataKey = @"Name";
    …
}

switch (cellNumber) {
    case 1: {
        NSString *viewDataKey = @"Name";
        …
    }
    …
}

Problem

I think I'm going blind, because I can't figure out where the syntax error is in this code: ``` if( cell == nil ) { titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier ] autorelease ]; switch( cellNumber ) { case 1: NSString *viewDataKey = @"Name"; etc... ``` When I try to compile it, I'm getting an Error: syntax error before '*' token on the last line. Sorry for such a basic question, but what am I missing?

Original source

Related problems