我应该如何在Swift中创建一个依赖于另一个变量的变量?

时间:2014-06-10 03:51:23

标签: ios cocoa-touch swift

我有一个cellForItemAtIndexPath方法,我正在使用UICollectionView。重用标识符取决于indexPath,因此我计划执行以下操作:

var reuseIdentifier: String

if indexPath.row == 0 {
    reuseIdentifier = "One"
} else if indexPath.row == 1 {
    reuseIdentifier = "Two"
} else if indexPath.row == 2 {
    reuseIdentifier = "Three"
}

var cell: UICollectionViewCell = collectionView.dequeueReusableCellWithIdentifier(reuseIdentifier, indexPath:indexPath)

这是对的吗? reuseIdentifier应该是一个可选的字符串,还是正常的?

此外,我是否在nil案例中正确处理了它?如果它不是2,reuseIdentifier 没有,对吧? (这与nil不同?)我应该清楚地处理这个问题,对吗?

2 个答案:

答案 0 :(得分:1)

为什么不这样简单呢?

let reuseIdentifier = ["One", "Two", "Three"][indexPath.row]

注意:如果indexPath.row > 2,这会崩溃。如果发生这种情况,那么你应该更加小心。你可能会考虑这样的事情:

extension Array {
    func at(index: Int) -> T? {
        if index >= count {
            return nil
        } else {
            return self[index]
        }
    }
}

// ...

let reuseIdentifier: String? = ["One", "Two", "Three"].at(indexPath.row) // might be nil

答案 1 :(得分:0)

如果声明var非可选类型并且从不分配给它,那就是编译时错误。

如果你想让它为零,你需要将它声明为可选项。然后你需要妥善处理它为零的情况 - 因为表格会接受一个零单元格,你可以这样做。