Swift 3 - 将数组作为1项添加到另一个数组中

时间:2017-03-14 07:46:26

标签: arrays swift

此链接:Add an element to an array in Swift 展示了如何将项添加到数组中,我的问题是将数组作为项添加到另一个数组。

我没有找到任何类似的问题 - 我有这些数组:

[1,2,3][4,5,6]

我想将第一个数组作为一个整体附加到另一个数组,所以我得到了这个结果:

[4,5,6,[1,2,3]]

请注意,这是 NOT 预期结果:

[4,5,6,1,2,3]

我将如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

在这种情况下,容器数组应该是[Any]类型,以使其包含整数整数数组

let arr1 = [1,2,3] // by default, it should be of type [Int]
let arr2:[Any] = [4,5,6,arr1]

print(arr2) // [4, 5, 6, [1, 2, 3]]

请注意,Swift是强类型的,默认情况下,array 必须是一个int数组,-unlike Objective-C-array不能包含数据类型的混合。

这就是为什么你应该Any输入:

  

任何可以表示任何类型的实例,包括函数   类型。

请注意:

  

仅当您明确需要行为时才使用Any和AnyObject   他们提供的能力。 具体关于总是更好   您希望在代码中使用的类型。

访问元素:

默认情况下,访问[Any]数组中的元素的类型应为Any,例如:

let numberOne = arr2[0] // type of Any
let myArray = arr2[3] // type of Any

要获得所需的数据类型,您应该使用as?运算符使用可选绑定 强制,如下所示:

if let oneInt = arr2[0] as? Int {
    print("one is an Int and it equals to: \(oneInt)")
} else {
    print("one is NOT ad Int")
}
// one is an Int and it equals to: 4

if let oneString = arr2[0] as? String {
    print("one is an Int and it equals to: \(oneString)")
} else {
    print("one is NOT ad Int")
}
// one is NOT ad Int

备注:如果类型不匹配,使用as!运算符会导致应用程序崩溃。

let oneInt = arr2[0] as! Int // works fine
let oneString = arr2[0] as! String // CRASH!

有关as运算符的详细信息,您可以查看此Q&AType Casting文档。

答案 1 :(得分:1)

var a: [Any] = [1,2,3]
var b: [Int] = [3,4,5]
a.append(b) // [1, 2, 3, [3, 4, 5]]

答案 2 :(得分:1)

var arrayOne = [1,2,3]
var arrayTwo = [4,5,6]

如果您希望结果为:[4,5,6,[1,2,3]]

arrayTwo.append(arrayOne)

上面的代码会将arrayOne转换为单个元素,并将其添加到arrayTwo的末尾。

如果您希望结果为:[4,5,6,1,2,3]然后

arrayTwo.append(contentsOf: arrayOne)

以上代码将在arrayTwo的末尾添加arrayOne的所有元素。

谢谢。