私有setter公有getter属性

202 阅读1分钟

需求

对一个类的属性只希望本类可以设置修改,其他类只读。比如一个Person类有一个name属性,只能在类内部赋值,其他类只读。

实现

可使用private(set)对属性进行修饰,则getter为默认级别,setterprivate级别。

class Person {
    private(set) var name: String?
}

let person = Person()
person.name = "dow" //报错 Cannot assign to property: 'name' setter is inaccessible
let personName = person.name

也可以设置属性为私有setter公有getter:

class Person {
    public private(set) var name: String?
}

从而实现不同需求对属性的操作。