簡體   English   中英

致命錯誤:NSArray元素無法匹配Swift數組元素類型

[英]fatal error: NSArray element failed to match the Swift Array Element type

突然,我開始得到運行時錯誤,因為,

fatal error: NSArray element failed to match the Swift Array Element type

我宣布我的陣列為,

var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()

現在,在我的服務器響應成功塊中,

self.myArray = dicResponse["data"]! as Array

println(self.myArray) // FATAL ERROR HERE

在升級到Xcode6 Beta6之前,這是完美的

FYI : dicResponse["data"]! // is verified as valid

(抱歉指向錯誤的地方!)

解決了 :

不知道,但我做了一些改變,它的工作原理,

var myArray = [AnyObject]()

self.myArray = dicResponse["data"]! as [AnyObject]

如果我能用一些進一步的信息補充Teejay的答案。 這個錯誤:

fatal error: NSArray element failed to match the Swift Array Element type

是由類型不匹配引起的。

例如,對你的Swift數組類型進行強制轉換:

    myPersonList = aDictionary["persons"] as [Person]

根據關鍵"persons"訪問字典中的值,Swift希望收到一個Person類型的數組 這將編譯並將毫無問題地執行。

但是,稍后在訪問myPersonList數組元素的代碼中,如果類型不是指定的 - 在我的示例Person中 - 那么執行將因上面的錯誤而崩潰。

底線:你幾乎肯定在演員表中指定了錯誤的類型。 檢查您的字典對象以查看它真正包含的內容。

如果您正在使用Cocoa API,您總會收到一個NSArray ,它不是典型的。

因此,您需要將該數組轉換為Typified Swift Array。

您應該能夠編譯此代碼:

var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()

self.myArray = dicResponse["data"]! as [CUSTOM_CLASS]

這樣,每個數組元素都被轉換為CUSTOM_CLASS對象。

TL; DR:也是由混合Xcode 7和Xcode 7.1二進制文件引起的。

這已經得到了回答,但是我在Alamofire的內部得到了一個有效[String]數組的錯誤。

在我的情況下,我使用carthage並沒有意識到xcode-select仍然指向崩潰快樂的Xcode 7.更新xcode-select到Xcode 7.1B解決了我的問題。

這可能是swift類型和ObjectiveC之間的沖突嗎? 因為我遇到了類似的情況,試圖在[NSMutableDisctionary]使用.forEach{}for ... in循環,但它給了我同樣的錯誤( NSArray element failed to match the Swift Array Element type )。 當我將類型更改為[Dictionary<String,Any>]一切都運行良好。 現在, []在Swift中引入,並在ObjectiveC中使用前綴NS...類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM