gpt4 book ai didi

swift - 在 Swift 中将 Any 转换为 AnyObject

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:47 26 4
gpt4 key购买 nike

我有一个包含在字典中的对象,如下所示:

let dict:<String, Any> = ["obj": self]

然后我尝试将该对象用作按下按钮的目标:

button.addTarget(dict["obj"], action: "buttonPress:", forControlEvents: .TouchUpInside)

我得到了错误:

Type '(String, Any)' does not conform to protocol 'AnyObject'

我猜我的问题是试图将 Any 转换为 AnyObject。这可能吗?

最佳答案

AnyAnyObject 的向下转换是不可能的,是的,你遇到的问题是 Any 不能转换为 任何对象

Any 可以表示任何类型(类、结构、枚举、整数、字符串等),而 AnyObject 只能表示引用类型(即类)。

为了解决这个问题,我认为你应该改变你的字典来存储 AnyObject 类型的值:

let dict:<String, AnyObject> = ["obj": self]

请注意,即使字典包含 AnyObject 值,它也可以存储:

  • 数字
  • 字符串
  • 数组
  • 字典

因为这些类型会自动桥接到相应的objc类型(NSNumberNSArrayNSDictionary等)

如果你真的需要最大的灵 active ,那么我建议使用 NSDictionary - 但在那种情况下,值类型必须显式装箱在引用类型中(即 int in NSNumber 等)。

@rintaro 的回答也是另一个不错的选择。

关于swift - 在 Swift 中将 Any 转换为 AnyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842781/

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