此链接: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]
我将如何实现这一目标?
答案 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&A和Type 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的所有元素。
谢谢。