我想我是瞎了,因为我不知道这段代码中的语法错误在哪里:

if( cell == nil ) {
    titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
        reuseIdentifier:CellIdentifier ] autorelease
    ];

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

当我试图编译它时,我在最后一行得到了Error: syntax error before '*' token分.

很抱歉问了这么一个基本的问题,但我遗漏了什么?

推荐答案

我手头没有合适的Objective-C编译器,但只要C struct 相同:

switch { … }给出one个区块级别的范围,而不是每个case都有一个.在范围开头以外的任何地方声明变量都是非法的,在switch中声明变量是危险的,因为它的初始化可能会被跳过.

以下任一项是否解决了该问题?

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

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

Objective-c相关问答推荐

将 NSMutableAttributedString 转换为 NSString

Objective-C struct 的默认值以及如何测试

当我们只能使用 NSObject 时,为什么还要使用 id?

在哪里可以找到 iPad 示例代码

iphone - 防止uiscrollview通过滚动

NSArray 添加元素

让 iPhone sleeping

获取按其各自值排序的 NSDictionary 键

改变 setContentOffset:animated: 的速度?

使用 DatePicker 展开和折叠 UITableViewCells

添加自定义 initWith?

iOS 崩溃日志(log)中的异常类型

如何在 iOS 上将图像旋转 90 度?

Objective-C中的继承和类别有什么区别

Objective-c 中 SEL 类型的属性

允许用户从 UILabel 中 Select 文本进行复制

Instruments Allocations 跟踪用户定义类的对象的分配和解除分配

为什么 Select Emacs/Vim/Textmate? Xcode 还不够好吗?

更改导航栏的字体

CALayer:仅在一侧添加边框