gpt4 book ai didi

swift - AnyObject 与具有结构类型的 Any

转载 作者:可可西里 更新时间:2023-10-31 23:14:13 25 4
gpt4 key购买 nike

我在区分 AnyObject 和 Any 时遇到了一些麻烦。在 Apple 的文档中,它说“AnyObject 可以表示任何类类型的实例”,但是当我声明一个包含 AnyObject 的数组时,我可以将结构类型放在那里,这不是类。所以,

var array : [AnyObject] = [6, "Foo", "Bar"]

有效,这实际上没有意义,因为 Int 是一种结构类型。我正在尝试与 API 进行交互,并尝试确定从后端发送的哈希值是否最好用作 [String : AnyObject] 或 [String : Any]。我正在尝试使用前者,因为它更具体。提前感谢您的帮助

最佳答案

我在 IBM Swift Sandbox 中试过这个这是结果。

swift 2.2:

Swift Ver. 2.2 (Jan 11, 2016)
Platform: Linux (x86_64)

ERROR at line 1, col 28: value of type 'Int' does not conform to expected element type 'AnyObject'
var array : [AnyObject] = [6, "Foo", "Bar"]
^
swift-build: error: exit(1): ["/usr/bin/swift-build-tool", "-f", "/swift-execution/.build/debug/TempCode.o/llbuild.yaml"]

swift 3.0:

Swift Ver. 3.0 (Release)
Platform: Linux (x86_64)

ERROR at line 1, col 28: value of type 'Int' does not conform to expected element type 'AnyObject'
var array : [AnyObject] = [6, "Foo", "Bar"]
^
as! AnyObject

所以它也不编译。但是,重要的是要了解:

...number literals do not have an explicit type in and of themselves. Their type is inferred only at the point that they are evaluated by the compiler.

(引自The Swift 3 Language Guide)

例如 6 默认情况下将被评估为 Int,但也可以隐式评估为 DoubleFloatUInt 等基于上下文。例如:

var i : Float = 6 // Perfectly fine - implicitly evaluated as Float

但是这些数字字面量不能被隐式计算为 AnyObject

关于swift - AnyObject 与具有结构类型的 Any,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com