如何添加到Swift中存储为Any的数组

时间:2017-11-20 08:53:16

标签: arrays swift any

我有一个必须属于Any类型的成员:

var type: MyValueType
var value: Any!

价值的一种可能类型是Array< Int > 如何添加存储在值中的数组?

我尝试过施法,但是施法的结果被认为是不变的。

使用此:

if var arr = (value as! Array<Int>) { ... }

不起作用,因为arr是数组的副本,而不是数组本身。

我当然可以再次将arr分配给value,但这不会造成不必要的复制吗?

1 个答案:

答案 0 :(得分:2)

您可以选择将数组绑定到临时变量,进行变异并将临时变量分配回来,例如

var value : Any!

value = [1, 2, 3]

if var intArray = value as? [Int] {
    intArray.append(4)
    value = intArray
}

在这种情况下,不必要的复制是必要的。

替代方案可以是基于协议的解决方案。一切都比Any好。