类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议“AnyObject”

Posted

技术标签:

【中文标题】类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议“AnyObject”【英文标题】:Type 'NSFastEnumerationIterator.Element' (aka 'Any') does not conform to protocol 'AnyObject' 【发布时间】:2016-10-30 00:37:16 【问题描述】:

我正在尝试将我的应用程序更新到 Swift 3.0 并且遇到了错误:Type 'NSFastEnumerationIterator.Element' (aka 'Any') does not conform to protocol 'AnyObject'

上线:

        self.friends.append(Friend(userName: (detailData as AnyObject).value["userName"] as! String, phoneNumber: detailData.value["phoneNumber"] as! String, status: "Friend", statusSort: 2, name: detailData.value["userName"] as! String, userID: detailData.key))

我该如何重构它?

【问题讨论】:

这样的代码是不可读、不可调试和不可管理的。我强烈建议你把它分成大约 6 行左右,这样每一行都是可读和可调试的。 您的代码中没有迭代器。 【参考方案1】:

鉴于您的代码,我假设 detailData 的类型为 NSFastEnumerationIterator.Element

您正在将NSFastEnumerationIterator.Element 投射到AnyObject

(detailData as AnyObject)

但是NSFastEnumerationIterator.Elements 是结构体,所以将AnyObject改为Any

(detailData as Any)

【讨论】:

以上是关于类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议“AnyObject”的主要内容,如果未能解决你的问题,请参考以下文章

c#中值类型和引用类型的区别

MySQl数据类型

值类型和引用类型

TS 基本类型分类any 类型

MySQL数据类型 - 数字类型 - 数字类型语法

js简单类型与复杂类型