【问题标题】:fatal error: NSArray element failed to match the Swift Array Element type致命错误:NSArray 元素无法匹配 Swift Array 元素类型
【发布时间】:2014-10-18 12:33:53
【问题描述】:

我突然开始收到运行时错误,

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]

【问题讨论】:

  • 你能发布更多信息吗?
  • 是的,请发布更多代码。
  • 当然,更新的问题
  • @BaSha 如果有帮助,请接受一个答案,或者写下并接受您自己的答案以供将来参考,而不是在问题中写下您的解决方案
  • 我遇到了同样的问题,但我的解决方案是在新的 Swift 1.7.1 解析版本中子类化 Parse PFObject 时出错。

标签: ios swift ios8 xcode6-beta6 xcode6-beta5


【解决方案1】:

如果我可以用一些进一步的信息来补充 Teejay 的回答。这个错误:

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

是由类型不匹配引起的。

例如强制转换为您的 Swift 数组类型:

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

根据键 "persons" 访问字典中的值,Swift 期望接收 Person 类型的数组。这将编译并毫无问题地执行。

但是,稍后在您的代码中访问 myPersonList 数组元素时,如果类型不是指定的 - 在我的示例中为 Person - 那么执行将因上述错误而崩溃。

底线:您几乎可以肯定在演员表中指定了错误的类型。检查您的字典对象,看看它真正包含什么。

【讨论】:

【解决方案2】:

如果您使用 Cocoa API,您总是会收到 NSArray,这是典型的。

因此,您需要将该数组转换为典型的 Swift 数组。

你应该可以编译这段代码:

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

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

这样,每个数组元素都被转换为CUSTOM_CLASS 对象。

【讨论】:

    【解决方案3】:

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

    这已经得到解答,但我刚刚在 Alamofire 的内部遇到了这个错误,因为它是一个有效 [String] 的数组转换。

    就我而言,我使用的是 carthage,但没有意识到 xcode-select 仍然指向崩溃的 Xcode 7。将 xcode-select 更新到 Xcode 7.1B 解决了我的问题。

    【讨论】:

      【解决方案4】:

      这可能是 swift 类型和 ObjectiveC 的类型之间的冲突吗? 因为我在尝试使用.forEach{}for ... in 方式循环[NSMutableDisctionary] 时遇到了类似的情况,但它给了我同样的错误(NSArray element failed to match the Swift Array Element type)。当我将类型更改为[Dictionary<String,Any>] 时,一切正常。现在,[] 在 Swift 中被引入,并且在 ObjectiveC 中以 NS... 为前缀类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        • 1970-01-01
        • 1970-01-01
        • 2015-09-27
        相关资源
        最近更新 更多