在Tests项目中,我有一些测试助手函数的扩展,就像这样:
Xcode调试器控制台也不喜欢这个特定的整数: 字符串运行良好。你遇到过这样的问题吗?有什么想法吗?
编辑:以防万一,如果有人也遇到这个问题。从UInt32/Int32转换为Int是设计上失败的。即使对象在中间被转换为
即使
在Int的声明中
extension Employee {
static func mockDict() -> Dictionary<String, Any>! {
return ["ID": arc4random() % 1000,
"FirstName": "Employee First Name",
...]
}
}
我已经删除了不必要的代码。由于某些未知原因,我无法从这个字典中访问ID,当进行转换时,我遇到了SIGABRT 6错误。
employeeDict["ID"] as! Int
Xcode调试器控制台也不喜欢这个特定的整数: 字符串运行良好。你遇到过这样的问题吗?有什么想法吗?
编辑:以防万一,如果有人也遇到这个问题。从UInt32/Int32转换为Int是设计上失败的。即使对象在中间被转换为
Any
或Anyobject
。即使
@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序列化中遇到此问题的人,进行第二次编辑。是的,如果要序列化UInt32、Int64或任何整数协议实例(除了Int),则序列化将失败,并显示错误NSInvalidArgumentException
Invalid type in JSON write (_SwiftValue)
NSNumber
,以便将Integer
协议实例转换为Int
而不会崩溃。 - user1232690