我不明白何时在Swift中使用AnyObject以及何时使用Any。
就我而言,我有字典
[字串:???]
??? :可以是Int,Double,Float,String,Array,Dictionary
有人可以向我解释Any和AnyObject之间的区别以及在我的情况下使用哪个。
阿拉克
AnyObject仅适用于引用类型(类),Any适用于值和引用类型。
AnyObject
Any
所以你应该去[String: Any]。
[String: Any]
类型转换为Any和AnyObject Swift提供两种特殊类型来处理非特定类型: Any 可以代表任何类型的实例,包括函数类型。 AnyObject 可以代表任何类类型的实例。 注意: 使用Any和AnyObject只有当你明确需要的行为和能力,他们提供的。最好对要在代码中使用的类型进行具体说明。
类型转换为Any和AnyObject
Swift提供两种特殊类型来处理非特定类型:
注意:
使用Any和AnyObject只有当你明确需要的行为和能力,他们提供的。最好对要在代码中使用的类型进行具体说明。
从 雨燕编程语言 : https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID342
--
还要注意,当您使用Cocoa API时,通常会收到一个AnyObject数组,这是因为没有标明Objective- C数组。因此,您需要将它们转换为所需的数组类型。
编辑: (2015 年12月22日)在最后一条语句中,请注意,这在Swift 2.0和Xcode 7中正在发生变化 。Apple 在Objective-C中引入了“轻量级”泛型,因此许多Cocoa API现在已经返回了正确的类型。
编辑: (2016年10月18日) 请注意,自Swift 3.0起,id现在将Objective-C 导入为Any,不再是AnyObject。
id