好久沒寫Blog了,今天來一發
一個iOS項目,今天第一次用Xcode11打開,出現了若干錯誤,逐一修復後,編譯運行,App可恥的崩鳥…
調試發現崩潰出現在如下一行中:
這個在之前的Xcode10中運行是沒有問題的,那麼可能的原因就是新的Swift運行時在運行檢查時更加嚴格了,在新的Swift runtime中hashValue返回的值超出了Int32可表示的範圍。
做個測試:
顯然在之前的Runtime中返回的結果一定是小於Int32.max的,所以運行不會崩潰。
因爲id與數據庫中的表字段對應,如果要修改成64位,勢必要改動數據庫的表結構,所以這裏用一個臨時的辦法規避:
let id = Int32(truncatingIfNeeded: UUID().hashValue)
That’s all,謝謝觀賞 😉