我有一个大型数据模型,其中对象需要可散列以进行比较。为此,我向它们添加了 hashValue getter,如下所示:
var hashValue:Int
{
let h1 = (31 &* id.hashValue)
&+ caseID.hashValue
&+ statusID.hashValue
&+ assignedToID.hashValue
let h2 = h1 &+ runID.hashValue
&+ templateID.hashValue
&+ typeID.hashValue
&+ priorityID.hashValue
let h3 = h2 &+ milestoneID.hashValue
&+ customOS.description.hashValue
&+ title.hashValue
&+ estimate.hashValue
&+ estimateForecast.hashValue
let h4 = h3 &+ refs.hashValue
&+ customAutomated.hashValue
&+ customPreconds.hashValue
let h5 = h4 &+ customSteps.hashValue
&+ customExpected.hashValue
let h6 = h5 &+ customMission.hashValue
&+ customGoals.hashValue
&+ customLabel.description.hashValue
let h7 = h6 &+ customSteps.hashValue
&+ customStepsSeparated.description.hashValue
return h7
如果模型对象具有太多属性,我将它们按上述方式分解。这很顺利,直到我用同样的方法覆盖了更多的模型类。现在大约。10 个可散列的模型类编译时间从 1 分钟变为 10 分钟,之后编译完全失败并出现以下错误:
Error:unable to execute command: Killed: 9
Error:compile command failed due to signal 9 (use -v to see invocation)
Error:Build failed with 0 errors and 97 warnings in 14m 34s 489ms
我能做些什么来防止这种情况发生?我正在使用 Swift 4 和 Xcode 9.2。