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

     2023-03-14     277

关键词:

【中文标题】类型“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)

【讨论】:

引用类型和值类型

CLR支持两种类型:引用类型和值类型。引用类型总是从托管堆上分配,值类型一般在线程栈上分配。在.NETFrameworkSDK中指出,任何称为类的类型都是引用类型,所有值类型都成为结构或枚举以下代码演示值类型与引用类型区别class... 查看详情

[journeywithgolang]3.typesystem

golang的类型分为命名类型和未命名类型。命名类型包含预声明类型,可以通过标识符表示,用户自定义类型也是命名类型。未命名类型由预声明类型、关键字和操作符组合而成。未命名类型又称为类型字面量。array/slice/map/channel/... 查看详情

typescript类型别名

​类型别名类型别名声明可以为typescript中任意类型命名。​​type​​是声明类型别名的关键字。​​AliasName​​表示类型别名的名称。​​Type​​表示类型别名关联的具体类型。类型的别名必须是合法的标识符。一般类型别名... 查看详情

ts基本类型分类any类型

参考技术Aboolean(布尔类型)number(数字类型)string(字符串类型)array(数组类型)tuple(元组类型)enum(枚举类型)any(任意类型)null和undefined类型void类型never类型object对象类型 查看详情

c#数据类型

C#的数据类型可以分为3类:数值类型,引用类型,指针类型。指针类型仅在不安全代码中使用。   值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型。引用类型包括类类型,接口类型,代表类型和... 查看详情

值类型与引用类型

在C#中,所有类型都可划分为值类型和引用类型。值类型包括简单类型、结构体类型和枚举类型;引用类型包括自定义类、数组、接口、委托等。值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例... 查看详情

弱类型强类型动态类型静态类型

装载: https://www.zhihu.com/question/19918532 弱类型:>"1"+2‘12‘ 强类型:>>>"1"+2Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:cannotconcatenate‘st 查看详情

java数据类型——基本类型/包装类型

Java数据类型(基本类型/引用类型)基本类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型;Java是一种面向对象语言,为了让基本类型具备对象特性(比如方法调用... 查看详情

品味类型——值类型和引用类型

基本概念值类型(ValueType):  值类型实例通常分配在线程的堆栈(Stack)上,并且不包含任何执行实例数据的指针,因为变量本身就包含了其数据实例。其在MSDN的定义为:值类型直接包含它们的数据,值类型的实例要么在堆... 查看详情

c数据类型

在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。C中的类型可分为以下几种:类型描述基本类型它们是算术类型,包括两种类... 查看详情

swift中的值类型与引用类型

顶级修饰  次级修饰  赋值类型  存储类型值类型   值类型   深拷贝   栈值类型   引用类型  浅拷贝   堆引用类型  值类型   浅拷贝   堆引用类型  引用类型  浅拷贝   堆&nb... 查看详情

强类型与静态类型以及弱类型与动态类型之间的区别

】强类型与静态类型以及弱类型与动态类型之间的区别【英文标题】:DifferencebetweenStrongvsStaticTypingANDWeakvsDynamicTyping【发布时间】:2012-08-0701:02:58【问题描述】:据我了解,动态类型与弱类型相同,强类型与静态类型相同,但我... 查看详情

mysql-数据类型(代码片段)

...习路线图】获取学习路线图。文章目录前言一、MySQL数据类型介绍1、整数类型2、浮点数类型和定点数类型3、日期与时间类型4、字符串类型5、二进制类型二、如何选择数据类型1、整数类型和浮点数类型2、浮点数类型和定点数类... 查看详情

类型安全与静态类型?

】类型安全与静态类型?【英文标题】:TypeSafevsStaticTyping?【发布时间】:2012-10-3123:04:07【问题描述】:如果一种语言是类型安全的,这是否意味着人们可以自动假定它是静态类型的,因为您必须在编译时检查类型?【问题讨论... 查看详情

值类型和引用类型

1***、C#中有两种类型: 值类型和引用类型:    值类型的变量直接包含他们的数据,而引用类型的变量存储引用类型存储对他们的数据的引用,后者称为对象:    简单说:值类型直接存储其值,引... 查看详情

数据类型转换(针对数字类型)

1、 为什么有数据类型转换?分为2大类:数字类型(int、double)、非数字类型(字符’’、字符串””、布尔类型boolean)2、 数据类型转换分类a) 自动类型转换——【p41页】i. 规则1:ii. 规则2:int类型的值,保存到d... 查看详情

《go语言实战》go类型:基本类型引用类型结构类型自定义类型

Go语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。提前知道值的类型的好处有很多,比如编译器可以合... 查看详情

值类型和引用类型的区别

C#中两种数据类型:a值类型b引用类型值类型的变量直接包含值,将一个值类型变量赋值给另一个值类型变量时,它将复制包含的值.它与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不会复制对象本身.所有的... 查看详情