Ios 无法分配给此表达式的结果
我正在对uiscrollview进行子类化,在layoutSubviews方法中,我有以下内容Ios 无法分配给此表达式的结果,ios,swift,Ios,Swift,我正在对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且是
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
且是不可变的。在您的代码中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
另外,如果您试图修改视图的框架,则仅当您直接将其指定给
视图时,它才会起作用。frame.origin.x=100
,因为上述代码只会在f
中创建框架的副本。在您的代码中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
此外,如果您试图修改视图的框架,则仅当您直接指定给视图?.frame.origin.x=100时,该操作才会起作用,因为上述代码只会在f
中创建框架的副本