相关疑难解决方法(0)

什么使属性成为 Swift 中的计算属性

让我们从代码片段开始:

St Foo {
    var proA: Int = 0 { // needs initialization
        willSet {
            print("about to set proA to \(newValue) from \(proA)")
        }
        didSet {
            print("already set proA to \(proA) from \(oldValue)")
        }
    }

    var ProB: Int { // do not needs initialization 
        return 1
    }
}

let foo = Foo()
foo.proA = 23
print(foo.ProB)
Run Code Online (Sandbox Code Playgroud)

以下是我个人对存储和计算属性的一些理解:

a:只有观察者的属性(willSet 和 didSet)不是计算属性而是存储属性(例如上面代码中的proA属性)。

b:计算属性不能有初始化(见上面代码的注释)。

c: setter 相当于属性观察者,属性观察者只是变异前后的 setter + 观察者。

问题:

1.我想知道是什么使属性成为计算属性?只要该属性有一个 getter 并返回它就是一个计算属性,这是否正确?

2.我的所有理解(a, b & c)都正确吗?如果没有,请您指出来。

3. …

properties swift computed-properties property-observer

6
推荐指数
1
解决办法
5977
查看次数

错误:无法在属性初始值设定项中使用实例成员 - Swift 3

当我编译以下代码时,我得到一个错误"不能在属性初始化程序中使用实例成员'AddEployeeName',属性初始化程序在'self'可用之前运行".你能帮忙解决这个错误吗?该计划允许员工输入他们的名字并拍下他们的照片:

class AddEmployeeViewController: UITableViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

@IBOutlet weak var addEmployeeName: UITextField!
@IBOutlet weak var addEmployeeEmail: UITextField!
@IBOutlet weak var employeePhoto: UIImageView!

let employee: [String:AnyObject] = [

    "name": addEmployeeName.text!,
    "email": addEmployeeEmail.text!,

    ]
Run Code Online (Sandbox Code Playgroud)

instance-variables swift3

5
推荐指数
1
解决办法
1万
查看次数