iOS项目升级到Xcode11后编译运行崩溃的原因及解决

好久没写Blog了,今天来一发

一个iOS项目,今天第一次用Xcode11打开,出现了若干错误,逐一修复后,编译运行,App可耻的崩鸟…

在这里插入图片描述

调试发现崩溃出现在如下一行中:

在这里插入图片描述

这个在之前的Xcode10中运行是没有问题的,那么可能的原因就是新的Swift运行时在运行检查时更加严格了,在新的Swift runtime中hashValue返回的值超出了Int32可表示的范围。

做个测试:

在这里插入图片描述

显然在之前的Runtime中返回的结果一定是小于Int32.max的,所以运行不会崩溃。

因为id与数据库中的表字段对应,如果要修改成64位,势必要改动数据库的表结构,所以这里用一个临时的办法规避:

let id = Int32(truncatingIfNeeded: UUID().hashValue)

在这里插入图片描述

That’s all,谢谢观赏 😉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章