gpt4 book ai didi

swift - 如何区分 XCode 9 中的 AnyObject(或 Int)类型 - 新的 Swift 编译器

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

我需要检查给定 Int(或 Int16 或 UInt8)值的 AnyObject 的类型,即

在 Xcode 8 中——切换对象,用例:是 Uint8是 Int16是 Int 可以正常工作。
在 Xcode 9 中 - 它总是输入第一个可能为真的情况。

这是 Playground 的代码示例:

var t1: AnyObject?
var t2: AnyObject?

t1 = 30 as AnyObject
t2 = Int16(30) as AnyObject

if let obj1 = t1 {
switch obj1 {
case is UInt8:
print("UInt8")
case is Int16:
print("Int16")
case is Int:
print("Int")
default:
break
}
}

if let obj2 = t2 {
switch obj2 {
case is UInt8:
print("UInt8")
case is Int16:
print("Int16")
case is Int:
print("Int")
default:
break
}
}

XCode 8 Playground 控制台打印:
整数
整数16

XCode 9 Playground 控制台打印:
UInt8
UInt8

一个。有人可以解释原因,和/或附上与此相关的任何文档化引用吗?
B. 如果有人可以帮助我在 XCode 9 中实现相同的功能,我会很高兴。

谢谢。

最佳答案

从 Swift 3 开始,所有数字类型都是 Any,而不是 AnyObject

var t1: Any?
var t2: Any?

t1 = 30 as Any
t2 = Int16(30) as Any
...

这解决了问题。

我假设转换为 AnyObject 将类型桥接到匹配任何大小写的 NSNumber

关于swift - 如何区分 XCode 9 中的 AnyObject(或 Int)类型 - 新的 Swift 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46786235/

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