![](/img/trans.png)
[英]PFSubclassing with array pointer and swift 1.2 - fatal error: NSArray element failed to match the Swift Array Element type
[英]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.