无法分配给此表达式的结果

Cannot assign to the result of this expression

我正在对 uiscrollview 进行子类化,在 layoutSubviews 方法中我有以下内容

let v = self.delegate?.viewForZoomingInScrollView!(self)
let f = v?.frame

if f != nil {
f!.origin.x = 100
}

我遇到错误:

Cannot assign to the result of this expression

在线

f!.origin.x = 100

我哪里错了

因为 f 声明为 let 且不可变。

在您的代码中 f 被声明为不可变变量。不可变变量在声明初始赋值后不能更改。

 let variable_name = 10 
 variable_name = 11 // Cannot assign to let value 'v'

let关键字用于声明不可变变量。
var关键字用于声明可变变量。

 var variable_name = 10 
 variable_name = 14 // Can be changed

所以将您的代码更改为 var f = v?.frame

此外,如果您尝试修改视图的框架,只有直接分配给 view?.frame.origin.x = 100 才会起作用,因为上面的代码只会在 [=12= 中创建框架的副本].