use*_*690 2 int arc4random swift
在Tests项目中,我有一些测试帮助函数的扩展.像这样:
extension Employee {
static func mockDict() -> Dictionary<String, Any>! {
return ["ID": arc4random() % 1000,
"FirstName": "Employee First Name",
...]
}
}
Run Code Online (Sandbox Code Playgroud)
(我剥掉了不必要的代码).出于某些未知原因,我从这本字典中访问ID时遇到了问题.铸造时我有SIGABRT 6
employeeDict["ID"] as! Int
Run Code Online (Sandbox Code Playgroud)
Xcode调试器控制台也不喜欢这个特定的整数:
字符串工作正常.你遇到过这样的问题吗?有任何想法吗?
编辑:以防万一也会遇到这个问题.通过设计从UInt32/Int32到Int FAILS的铸造.即使物体被铸入Any或Anyobject中间.即使
@available(*, message: "Converting UInt32 to Int will always succeed.")
public init?(exactly value: UInt32)
Run Code Online (Sandbox Code Playgroud)
在Int的声明中
public struct Int : SignedInteger, Comparable, Equatable {
...
}
Run Code Online (Sandbox Code Playgroud)
和
public struct Int32 : SignedInteger, Comparable, Equatable {
...
}
Run Code Online (Sandbox Code Playgroud)
编辑2为那些可能在JSON序列化中遇到此行为的人.是的,NSInvalidArgumentException Invalid type in JSON write (_SwiftValue)如果要求序列化UInt32,Int64或除Int之外的任何Integer协议实例,序列化将失败并显示错误
试试这个:
let a = employeeDict["ID"] as! UInt32
let number = Int(a)
Run Code Online (Sandbox Code Playgroud)
现在您可以number用来执行任何操作.
| 归档时间: |
|
| 查看次数: |
3910 次 |
| 最近记录: |