如何在swift类中将变量设置为self(class)? ios xcode

时间:2015-06-03 13:45:45

标签: ios swift

我有一个名为Node的类。当我初始化Node时,我希望它的前一个节点和下一个节点始终指向它自己 - 创建一个循环无限的节点串。

None

如何在课程中自动将变量分配给 self

1 个答案:

答案 0 :(得分:1)

由于在初始化所有self属性之前无法引用self,因此必须采用两阶段方法并使用init - 但您还需要使节点可选,因为您首先需要将它们设置为某个东西(例如nil),然后在设置了所有自我属性(包括它们)后再将它们设置为自我。

您可以采用与name一样的方法,并且为了方便以后隐式选项,只要您小心确保它们永远不会nil。< / p>

class Node {
    var name: String!
    var previousNode: Node!
    var nextNode: Node!

    init?(name: String) {
        if name.isEmpty {
            return nil
        }
        self.name = name
        previousNode = self
        previousNode = self
    }

    // since this takes a `Node` not a `Node?` you know
    // it can’t set them to nil, which is good
    func setPreviousNode(prevNode: Node) {
        self.previousNode = prevNode
    }

    func setNextNode(nextNode: Node) {
        self.nextNode = nextNode
    }
}

let node = Node(name: "fred")  
// good to know the playground printing code checks for cycles!
// {name "fred" {name "fred" {…} nil} nil}