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"

请在代码块旁边提供解释,以便其他有类似问题的人能够轻松理解正在发生的事情。就目前而言,这个问题是在一个低质量的帖子审查队列中。