在测试项目中,我有一些带有测试助手函数的扩展。这样地:

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

(我去掉了不必要的代码)。由于一些尚不清楚的原因,我无法从这本词典中访问ID。我在选角时有六号手
employeeDict["ID"] as! Int

Xcode调试器控制台也不喜欢此特定整数:
swift - 无法将&#39;Swift.UInt32&#39;类型的值转换为&#39;Swift.Int&#39;-LMLPHP
琴弦很好用。你遇到过这样的问题吗?有什么想法吗?
编辑:以防任何人也会遇到这个问题。从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 {
    ...
}

为那些在JSON序列化中可能遇到这种行为的人编辑2。是的,如果要求序列化uint32、int64或除int以外的任何整数协议实例,则序列化失败,并出现错误

最佳答案

试试这个:

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

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

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

10-12 13:11