尝试使我的整个数据模型可以使用,例如......
let id:Int
let projectID:Int
let parentID:Int
let name:String
let description:String
let url:String
let startOn:Date?
let startedOn:Date?
let dueOn:Date?
let completedOn:Date?
let isStarted:Bool
let isCompleted:Bool
var hashValue:Int
{
return (31 &* id.hashValue)
&+ projectID.hashValue
&+ parentID.hashValue
&+ name.hashValue
&+ description.hashValue
&+ url.hashValue
&+ (startOn != nil ? startOn!.hashValue: 0)
&+ (startedOn != nil ? startedOn!.hashValue: 0)
&+ (dueOn != nil ? dueOn!.hashValue: 0)
&+ (completedOn != nil ? completedOn!.hashValue: 0)
&+ isStarted.hashValue
&+ isCompleted.hashValue
}
我收到编译错误:
错误:(112,5)表达太复杂而无法合理解决 时间;考虑将表达分解为不同的 子表达式
因此问题是:如何使哈希取决于许多属性的对象可以使用?我有一些模型对象的数量是上述属性的3-4倍。
答案 0 :(得分:0)
在多个部分中断你的表达,并在下一个附加中添加所有这些
var hashValue:Int
{
let firstFrg = (31 &* id.hashValue)
&+ projectID.hashValue
&+ parentID.hashValue
&+ name.hashValue
let secondFrg = firstFrg + &+ description.hashValue
&+ url.hashValue
&+ (startOn != nil ? startOn!.hashValue: 0)
let thirdFrg = secondFrg + &+ (startedOn != nil ? startedOn!.hashValue: 0)
&+ (dueOn != nil ? dueOn!.hashValue: 0)
&+ (completedOn != nil ? completedOn!.hashValue: 0)
let fourthFrg = thirdFrg + &+ isStarted.hashValue
&+ isCompleted.hashValue
return fourthFrg
}