2016-07-17 2 views
1

나는 학생 교실과 교복을 운영하고 있습니다. 학생용 인스턴스가 만들어지면 학생은 녹색 색상의 유니폼을 입게됩니다.클래스의 모든 인스턴스에 대한 속성 값을 변경하는 방법은 무엇입니까?

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 

모든 학생 유니폼의 색상을 빨강으로 한 번에 설정하는 방법은 무엇입니까?

답변

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 
1

학생 배열을 만들어 각 학생을 추가 할 수 있습니다. 다음은 모든 학생에 대해 for-loop으로 반복하고 유니폼에 빨간색 색상을 지정하십시오.

0
var students = [Student]() 
students.append(student1) 
students.append(student2) 
for student in students { 
    student.uniform.uniformColor = "Red" 
} 
+0

유사한 질문을 가진 사람들이 무슨 일이 일어나고 있는지 쉽게 이해할 수 있도록 코드 조각과 함께 설명해주십시오. 현재이 질문은 품질이 낮은 게시물 검토 대기열에 있습니다. – coatless

1

가 왜 색상을 선언하지 Uniform을 인스턴스 속성으로 사용하고 항상을 만드는 기본 이니셜 라이저를 만듭니다. Student 클래스의 붉은 색으로 표시된?

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" 
관련 문제