gpt4 book ai didi

swift - 无法将类型 'Swift.UInt32' 的值转换为 'Swift.Int'

转载 作者:可可西里 更新时间:2023-11-01 00:03:09 27 4
gpt4 key购买 nike

在测试项目中,我得到了带有一些测试辅助函数的扩展。像这样:

extension Employee {
static func mockDict() -> Dictionary<String, Any>! {
return ["ID": arc4random() % 1000,
"FirstName": "Employee First Name",
...]
}
}

(我删除了不必要的代码)。由于某些未知原因,我无法从此词典访问 ID。类型转换时我有 SIGABRT 6

employeeDict["ID"] as! Int

Xcode 调试器控制台也不喜欢这个特定的整数:

Ints

字符串工作正常。你遇到过这样的问题吗?有什么想法吗?

编辑:以防万一有人也会遇到这个问题。从 UInt32/Int32 转换为 Int 的设计失败。即使对象被转换为 AnyAnyobject 之间。尽管

@available(*, message: "Converting UInt32 to Int will always succeed.")
public init?(exactly value: UInt32)

在 Int 的声明中

public struct Int : SignedInteger, Comparable, Equatable {
...
}

public struct Int32 : SignedInteger, Comparable, Equatable {
...
}

EDIT 2 对于那些可能在 JSON 序列化中遇到这种行为的人。是的,序列化失败并出现错误 NSInvalidArgumentException Invalid type in JSON write (_SwiftValue) 如果要求序列化 UInt32、Int64 或 Int 以外的任何 Integer 协议(protocol)实例

最佳答案

试试这个:

let a = employeeDict["ID"] as! UInt32
let number = Int(a)

现在您可以使用number 来执行任何操作。

关于swift - 无法将类型 'Swift.UInt32' 的值转换为 'Swift.Int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229217/

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