将“nil”值赋给Swift中的一般类型变量

时间:2014-06-05 19:02:12

标签: swift

我认为var value: T = nil导致错误,因为XCode无法将nil值转换为泛型类型T.

class Node<T> {
    var value: T = nil
    var next: Node

    init(value: T) {
        self.value = value
        self.next = Node()
    }

    init() {
        self.next = Node()
    }
}

错误消息为

  

找不到接受提供的'_coversion'的重载   参数

有没有办法在Swift中为变量赋值nil

2 个答案:

答案 0 :(得分:20)

您需要将变量声明为可选:

var value: T? = nil

不幸的是,这似乎触发了未实现的编译器功能:

error: unimplemented IR generation feature non-fixed class layout

您可以通过使用NSObject的类型约束声明T来解决它:

class Node<T:NSObject> {
    var value: T? = nil
    var next: Node

    init(value: T) {
        self.value = value
        self.next = Node()
    }

    init() {
        self.next = Node()
    }
}

答案 1 :(得分:0)

尝试使用

var value: T? = nil

问号使变量成为可选变量,这意味着它可以具有值或为零。