This question already has answers here:
How to initialize properties that depend on each other
                                
                                    (4个答案)
                                
                        
                                上个月关闭。
            
                    
有人可以这么善良地解释为什么当我尝试在闭包内部使用常量属性时,为什么在Xcode中出现弯曲的错误吗?

我需要在多个constant中使用一个UITextFields属性,因此我将PLACE_HOLDER设置为该常量,但是当我尝试在闭包内部使用它时,出现以下弯曲错误。


  类型'((UserInputViewController)->()-> UserInputViewController'的值没有成员'PLACE_HOLDER'


class UserInputViewController: UIViewController{
  // constant
  let PLACE_HOLDER = "Some Text"

  // computed property for textField
  let textFieldOne: UITextField = {

    let textField1 = UITextField()
    textField1.placeholder = PLACE_HOLDER // error here
    // some other styles

    return textField1
  }()

  override func viewDidLoad(){}
}


知道为什么吗?

最佳答案

如果要在ViewController初始化之前在闭包内访问ViewController的任何属性,则需要将该变量声明为lazy

lazy var textFieldOne: UITextField = {
    let textField1 = UITextField()
    textField1.placeholder = self.PLACE_HOLDER
    return textField1
}()

09-13 13:56