gpt4 book ai didi

swift - 不能赋值,Swift 对待是不可变的

转载 作者:搜寻专家 更新时间:2023-11-01 06:15:52 24 4
gpt4 key购买 nike

我有协议(protocol):

protocol CellLineDrawing : Any {
var isShouldDrawBottomLine : Bool { get set }
var isShouldDrawUpperLine : Bool { get set }
}

然后我尝试为符合协议(protocol)的对象设置值:

var arrValues : [Any]!


func drawLinesIfNeeded () -> Void {

guard arrValues!.count > 0 else {
print("Empty array")
return
}

guard arrValues!.first is CellLineDrawing else {
print("Does not conform to cell line drawing protocol")
return
}

var firstModel = arrValues.first
var lastModel = arrValues.last

(firstModel as! CellLineDrawing).isShouldDrawUpperLine = true //ERROR - Cannot assign to immutable expression of type 'Bool'




}

最佳答案

表达式 (firstModel as!CellLineDrawing) 是一个常量,你不能改变它的属性(除非它是引用类型)。

除非我弄错了,否则你需要一个临时变量:

if var firstModel = arrValues.first as? CellLineDrawing {
firstModel.isShouldDrawUpperLine = true
arrValues[0] = firstModel
}

关于swift - 不能赋值,Swift 对待是不可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45235913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com