Swift: 无法将数组置为 nil

Swift: Cannot put an array to nil

我想做的是,有一个数组变量,每当它被调用时都会被初始化。为此,我在声明它时使用了 lazy 关键字。 但是,我有一个清晰的方法,我想在其中清除数组的内容(在 恒定的时间复杂度 中),为此我对数组执行 nil。这给了我一个错误:Cannot assign a value of type NilLiteralConvertible to a value of type [Int]。我该如何解决?

class Array
{
lazy var elementsInArray = [Int]()

func add(element: Int) {
    elementsInArray.append(element)
}

func clear() {
    elementsInArray = nil
}
}

有一个方法:

class Array
{
    lazy var elementsInArray = [Int]()

    func add(element: Int) {
        elementsInArray.append(element)
    }

    func clear() {
       elementsInArray.removeAll() //use this.
    }
}

要分配任何变量 nil,它应该被声明为可选的。 Int 不同于可选的 Int?。同样,[Int] 数组不同于可选的 [Int]? 数组

class Array
{
lazy var elementsInArray:[Int]? = [Int]()

func add(element: Int) {
    elementsInArray!.append(element)
}

func clear() {
    elementsInArray = nil
}
}

所以你应该像上面那样改变它,为Array中的元素分配nil值。

elementsInArray = []elementsInArray.removeAll()

一样有效

这只是将一个空数组分配给变量。

所以,最后我为让它工作所做的是:

class Array {
    private var _elementsInArray:[Int]?
    var elementsInArray:[Int]? {
        get {
            // If while accessing, this array is nil, initiate it with an empty array
            if _elementsInArray == nil {
                _elementsInArray = [Int]()
            }
            return _elementsInArray
        }
        set {
            _elementsInArray = newValue
        }
    }

    func add(element: Int) {
        elementsInArray?.append(element)
    }

    func clear() {
        elementsInArray = nil
    }
}

非常感谢@PrajeetShrestha 和@Thilo 帮助我。