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

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

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

iOS项目升级到Xcode11后编译运行崩溃的原因及解决_第1张图片

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

在这里插入图片描述

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

做个测试:

在这里插入图片描述

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

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

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

iOS项目升级到Xcode11后编译运行崩溃的原因及解决_第2张图片

That’s all,谢谢观赏

你可能感兴趣的:(iOS开发之旅,Swift,Xcode11,iOS,崩溃)