這裏consAry
類型是[NSLayoutConstraint?]
意味着它包含NSLayoutConstraint
類型的optional
對象,並使用for循環,你明確地說,它的類型NSLayoutConstraint
意味着non-optional
,所以要麼刪除,並在循環裏拆開可選值或使用flatMap
在consAry
與for循環。
選項1:刪除有明確的規範循環
for constraint in consAry {
if ((i > 2) && (screenHeight <= 568)){
padding = 10
}
constraint?.constant = padding
i = i + 1
}
選項2:使用可選的包裝,如果讓
for constraint in consAry {
if ((i > 2) && (screenHeight <= 568)){
padding = 10
}
if let currentConstraint = constraint {
currentConstraint.constant = padding
}
i = i + 1
}
選擇3:consAry使用flatMap
for constraint in consAry.flatMap ({ $0 }) {
if ((i > 2) && (screenHeight <= 568)){
padding = 10
}
constraint.constant = padding
i = i + 1
}
注意:您在此處使用i
進行索引編制,因此不使用帶有for循環的enumerated()
。
for (i, constraint) in consAry.flatMap ({ $0 }).enumerated() {
if ((i > 2) && (screenHeight <= 568)){
padding = 10
}
constraint.constant = padding
}
得到錯誤的最後代碼 - 不能分配給值:「i」是一個讓恆 –
@ThripthiHaridas刪除該行現在有自動循環的價值變化的每一次迭代沒有必要。也不需要聲明刪除行'var i:Int = Int(0)'。 –
@Nirav D謝謝你的回覆。節省了我的時間 –