好久没写Blog了,今天来一发
一个iOS项目,今天第一次用Xcode11打开,出现了若干错误,逐一修复后,编译运行,App可耻的崩鸟…
调试发现崩溃出现在如下一行中:
这个在之前的Xcode10中运行是没有问题的,那么可能的原因就是新的Swift运行时在运行检查时更加严格了,在新的Swift runtime中hashValue返回的值超出了Int32可表示的范围。
做个测试:
显然在之前的Runtime中返回的结果一定是小于Int32.max的,所以运行不会崩溃。
因为id与数据库中的表字段对应,如果要修改成64位,势必要改动数据库的表结构,所以这里用一个临时的办法规避:
let id = Int32(truncatingIfNeeded: UUID().hashValue)
That’s all,谢谢观赏 😉