【问题标题】:How to change the value of a property of all the instances of a class?如何更改类的所有实例的属性值?
【发布时间】:2016-07-17 08:52:57
【问题描述】:

我有一个学生班和一个制服班。 创建学生实例时,学生将拥有绿色制服。

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

如何将所有学生的制服颜色一次性设置为红色?

【问题讨论】:

    标签: ios swift class static instance


    【解决方案1】:

    如果您始终希望学生拥有最新的Uniform.uniformColor,请将uniform 更改为计算属性:

    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
    

    【讨论】:

      【解决方案2】:

      您可以尝试创建一个学生数组,将每个学生添加到其中。 接下来使用for-loop 对所有学生进行迭代,并将红色分配给 Uniform。

      【讨论】:

        【解决方案3】:

        为什么不将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"
        

        【讨论】:

          【解决方案4】:
          var students = [Student]()
          students.append(student1)
          students.append(student2)
          for student in students {
              student.uniform.uniformColor = "Red"
          }
          

          【讨论】:

          • 请在代码块旁边提供解释,以便其他有类似问题的人可以轻松理解正在发生的事情。就目前而言,这个问题处于低质量的帖子审核队列中。
          猜你喜欢
          • 1970-01-01
          • 2021-12-17
          • 1970-01-01
          • 2017-04-24
          • 2023-01-08
          • 2018-04-17
          • 1970-01-01
          • 2021-12-07
          • 1970-01-01
          相关资源
          最近更新 更多