Swiftmultidimensional array

我正在研究一些使用generics的代码。 这是我想要实现的一个例子:

var strings: Array<Array<String>> = [["1", "2", "3"], ["4", "5", "6"]] var array: Array<Array<AnyObject>> = strings 

但是编译器说“'String'与'AnyObject'不一样”。 我不知道为什么编译器抱怨,以及如何实现我所需要的。

我已经试过像这样:

 var array: Array<Array<AnyObject>> = strings as Array<Array<AnyObject>> 

没有任何成功。

你们有什么想法吗?

谢谢。

这是行不通的,因为,正如编译器所说, AnyObject 不是 String ,尽pipe可以将AnyObjectString ,反之亦然。

它甚至不使用可能看起来“兼容”的不同值types:

 var array1: Array<Array<UInt>> = [] var array2: Array<Array<Int>> = array1 

做你所需要的唯一方法是编写一个转换器,给定一个包含Stringtypes对象的String返回一个AnyObject数组。

原因是,即使两种数据types兼容,它们也不会使用相同数量的内存,并且可能具有不同的数据成员和初始化限制。

考虑到数组是值types,赋值不是通过引用完成的 – 而是创build一个数组副本并将其分配给目标variables。 如果基础数据types对于赋值的左侧和右侧是相同的,则可以将数组中的每个项目逐个字节地复制以创build它的副本。 如果左边和右边有不同的types,那是不可能的,因为它们很可能以不同的方式使用内存(即它们可能具有不同的数据成员),所以在这种情况下,对象应该通过初始化器实例化,但是哪一个并使用哪些参数?