2017-03-14 8 views
0

このリンクの間に:Add an element to an array in Swift はアイテムを配列に追加する方法を示します。私の質問は別の配列にアイテムとして配列を追加することです。Swift 3 - 配列を1つのアイテムとして別の配列に追加します。

私は同様の質問を見つけることができませんでした - 私は、これらの配列を持っている:

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

私は、全体として、他のものに最初の配列を付加したいので、私はこの結果を得る:

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

これは期待できない結果であることに注意してください:

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

どうすればいいですか?この場合において

+0

まず、配列の種類を定義します。 –

+0

[Swiftの配列に要素を追加する]の可能な複製(http://stackoverflow.com/questions/24002733/add-an-element-to-an-array-in-swift) –

答えて

1

、容器のアレイは、のintとint型の配列を含有するようにするタイプ[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]] 

注スウィフトが強く型付けされていることを、デフォルトでは、配列 intの配列でなければならない、-unlikeのObjective-C-の配列は、データ型が混在することはできません。

なぜあなたはAnyタイプすべきだ:任意の関数 型を含め、まったくタイプのインスタンスを

を表すことができます。

こと注:

はあなたが明示的にそれらが提供する行動と 能力を必要とする場合にのみ、任意とANYOBJECTを使用してください。 コード内で使用する予定のタイプについては、常に具体的にお伝えすることをお勧めします。


アクセス要素:デフォルト

[Any]配列からの要素にアクセスする、例えば、Anyのタイプのものであるべきである。

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

所望のデータ・タイプを取得します、あなたはを使用してくださいas? operをキャストする必要があります次のようにはオプション、を結合してインフレータ:

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!演算子を使用すると、型が一致しない場合、アプリケーションがクラッシュします。あなたはこのQ&AType Castingドキュメントをチェックすることをお勧めしますas演算子の詳細については

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

1
var a: [Any] = [1,2,3] 
var b: [Int] = [3,4,5] 
a.append(b) // [1, 2, 3, [3, 4, 5]] 
関連する問題