Ios 如何更改类的所有实例的属性值?
我有一个学生班和一个制服班。 创建学生实例时,学生将拥有绿色制服Ios 如何更改类的所有实例的属性值?,ios,swift,class,static,instance,Ios,Swift,Class,Static,Instance,我有一个学生班和一个制服班。 创建学生实例时,学生将拥有绿色制服 class Student{ var uniform = Uniform.uniformColor } class Uniform{ static var uniformColor = "Green" { didSet(newColor){ print("Change to \(newColor)") } } } let s
class Student{
var uniform = Uniform.uniformColor
}
class Uniform{
static var uniformColor = "Green"
{
didSet(newColor){
print("Change to \(newColor)")
}
}
}
let student1 = Student()
let student2 = Student()
print(student1)
print(student2)
Uniform.uniformColor = "Red"
print(Uniform.uniformColor)
print(student1.uniform)
//print Green
print(student2.uniform)
//print Green
let student3 = Student()
print(student3.uniform)
//print Red
我如何将所有学生的制服颜色立即设置为红色 您可以尝试创建一个学生数组,将每个学生添加到该数组中。
接下来对所有学生进行循环迭代,并为制服指定一个红色。如果您总是希望学生拥有最新的
制服。uniformColor
,则将制服更改为计算属性:
var students = [Student]()
students.append(student1)
students.append(student2)
for student in students {
student.uniform.uniformColor = "Red"
}
class Student {
var uniform: String { return Uniform.uniformColor }
}
示例:
let student1 = Student()
let student2 = Student()
print(student1.uniform) // Green
print(student2.uniform) // Green
Uniform.uniformColor = "Red"
print(student1.uniform) // Red
print(student2.uniform) // Red
为什么不将Uniform
的颜色声明为实例属性,并创建一个默认初始值设定项,该初始值设定项总是在Student
类中创建一个红色的Uniform
class Student
{
let uniform : Uniform
init() {
self.uniform = Uniform(color:"Red")
}
}
class Uniform
{
var color = "Green" {
didSet(newColor){
print("Change to \(newColor)")
}
}
init(color : String) {
self.color = color
}
}
let student = Student()
print(student.uniform.color) // "Red"
请在代码块旁边提供解释,以便其他有类似问题的人能够轻松理解正在发生的事情。就目前而言,这个问题是在一个低质量的帖子审查队列中。