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,謝謝觀賞 😉

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