繁体   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