2017-02-20 79 views
1

我試圖瞭解將不同類型的多個對象添加到[Any]陣列的最佳方法。這在Swift 3的遊樂場中不起作用,除非我明確地將數組和陣列中的對象轉換爲Any在Swift 3中將陣列多個對象添加到[Any]

var anyArray: [Any] = [] 
let strings = ["sup", "cool"] 
let numbers = [5, 3] 
anyArray += strings 
anyArray += numbers 
anyArray 

它失敗的消息 - 無法將類型「[任何]」預期參數類型的值「INOUT _」

+0

inout錯誤與swift中的指針和引用類型有關...你可以發佈你正在試圖做的整個方法嗎? –

+0

@MSU_Bulldog這是整個代碼 - 它在操場上。 – Alex

+0

@Alex您需要明確指定「AnyObject」的數組類型。 'anyArray + =字符串作爲[AnyObject]' –

回答

0

我覺得這是斯威夫特的編譯器無用的錯誤消息的另一種情況。真正的問題是AnyObject意味着任何對象(引用類型);結構 - IntString都是 - 不計數,因爲它們是值類型。如果您想要參考任何類型,請使用Any

+0

啊,夠公平的,但這並沒有解決問題,錯誤信息只是改變爲[Any]而不是[AnyObject] – Alex

1
var arr = [Any]() 
    let arr1:[Any] = [2,3,4] 
    let arr2:[Any] = ["32","31"] 
    arr += arr1 
    arr += arr2 
    print(arr) 
+0

所以錯誤來自嘗試添加'[Any]'和'[String]' ? – BallpointBen

+0

這真是bizzare - 我試過這個,自動完成向我建議'contentsOf:',但是然後編譯器說'extraneous argument label contentsOf:' - 作爲一個錯誤,所以我甚至不能編譯這個。我在Xcode 8.2.1 – Alex

+0

請確保你明確地將數組轉換爲[Any],否則編譯器會拋出「無關的參數標籤」片 –