无法分配此表达式的结果

时间:2015-01-08 08:23:40

标签: 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

我哪里出错

2 个答案:

答案 0 :(得分:3)

代码中的

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时才有效,因为上述代码只会在f中创建框架的副本。

答案 1 :(得分:1)

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