Setter / Getter in swift中的协议

时间:2018-01-10 07:48:24

标签: ios swift protocols

branchID设置为getter但我可以设置该值。将它指定为setter / getter有什么用?

    protocol Bank {
    var name: String {get set}
    var branchID: Int {get}
}

struct Person: Bank {enter code here
    var name: String = "ABC Bank"
    var branchID: Int = 123
}

let person = Person()
person.name
person.branchID

2 个答案:

答案 0 :(得分:1)

首先,代码不使用协议。

如果对象采用协议,则必须实现协议要求。您的代码会创建一个具有Person

所有功能的对象Person
var person = Person()

您可以更改branchID

person.branchID = 13

但是,如果您将person投射到Bank

var bank = person as Bank
bank.branchID = 13

你会收到错误

  

无法分配给属性:'branchID'是get-only属性

如果声明一个尝试更新符合Bank

的所有对象的函数,则会发生同样的错误
func updateID(item : Bank)
{
    item.branchID = 12
}

答案 1 :(得分:0)

Person中的branchID是一个新对象,你当然可以改变它的值。 当你写'银行。 branchID',你不能设置它的值