2016-07-17 4 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を反復し、赤色をUniformに割り当てます。

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" 
関連する問題