函数返回的编译器错误,在if语句中设置了值?

时间:2014-08-08 00:15:14

标签: swift

以下是我的代码示例:

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    var cell : goalTermCell
    if i == 1 {
        cell = tableView.dequeueReusableCellWithIdentifier("termCell",
                   forIndexPath: indexPath) asf goalTermCell 
    }
    else if i == 2 {
        cell = tableView.dequeueReusableCellWithIdentifier("termCell",
                   forIndexPath: indexPath) as goalTermCell
    }
    return cell
}

Xcode表示该变量在初始化之前使用。 我知道这段代码很愚蠢,它只是一个用于学习UI表的PoC

2 个答案:

答案 0 :(得分:0)

问题是我可能是1或2以外的东西,因此编译器会看到如果发生了什么,并且在这种情况下,单元格未设置。在这种情况下,它将被返回(即使用)而不被设置。

在这种情况下,我会使用一个case语句,默认替换if。

我注意到你的代码是不完整的,因为它没有在任何地方设置,因此这个解决方案可能有其他问题。

答案 1 :(得分:0)

您可以使用

switch i {
case 1:
    cell = whatEverYouWantItToBe
case 2:
    cell = whatEverYouWantItToBe
default:
    cell = whatEverYouWantItToBeWheniIsNot1or2
}

if i == 1 {
    cell = whatEverYouWantItToBe
}
else if i == 2 {
    cell = whatEverYouWantItToBe
}
else {
    cell = whatEverYouWantItToBeWheniIsNot1or2
}

cell = whatEverYouWantItToBeWheniIsNot1or2
if i == 1 {
    cell = whatEverYouWantItToBe
}
else if i == 2 {
    cell = whatEverYouWantItToBe
}

无论哪种方式,现在如果'i'恰好是1或2以外的东西,当从函数返回时,单元格仍将被初始化