2017-08-11 17 views
1

ここで検索したところ、Swiftのほとんどすべてが値ベースで参照ベースではないことがわかりました。私はクラスが参照を保持していることも読んでいます。私はベストを尽くしましたが、コードの下には何も印刷されません。誰かが配列の助けを借りてその行を印刷する手助けをすることができたら、それはすばらしいことになるだろう:)(もちろん可能であるなら...)。値が配列内で更新されない

編集:配列に5個のブール値が必要です。すべての配列にdidSetメソッドがあります。私がそれらにアクセスすると、その特定のdidSetがトリガーされます。それは可能ですか?

class PowerUpBooleans{ 
    var boolean: Bool 
    init(boolean: Bool){ 
     self.boolean = boolean 
    } 
} 
var iWantToChangeThis = false{ 
     didSet{ 
      print("it worked") 
     } 
    } 
    var powerUpBooleans = [PowerUpBooleans]() 
override func viewDidLoad() { 
     super.viewDidLoad() 
     powerUpBooleans.append(PowerUpBooleans(boolean: iWantToChangeThis)) 
     powerUpBooleans[0].boolean = true 
    } 
+1

ブール値はい@koropok – koropok

+0

ない参照することによって、値渡しであるが、アレイ内のそのブール値への参照を維持するために、任意のはありますか?または、これはまったく不可能ですか?ありがとうございました。 – NoKey

+0

以下の答えを試してみるか、inoutを使用してください。 – koropok

答えて

3

私は、あなた自身のトリガーを持ついくつかのブール値を設定したいと思います。

私が知っているように、クラスでラップされた値型を作成することは、それを参照型にすることしかできません。

だからこれを試してください。

class PowerUpBooleans{ 
    var boolean: Bool { 
    didSet { 
     trigger() 
    } 
    } 
    var trigger:() ->() 

    init(boolean: Bool, trigger: @escaping() ->()){ 
    self.boolean = boolean 
    self.trigger = trigger 
    } 
} 

let trigger1 = { 
    print("one worked.") 
} 
let trigger2 = { 
    print("two worked.") 
} 

var powerUpBooleans = [PowerUpBooleans]() 
powerUpBooleans.append(PowerUpBooleans(boolean: false, trigger: trigger1)) 
powerUpBooleans.append(PowerUpBooleans(boolean: false, trigger: trigger2)) 
powerUpBooleans[0].boolean = true // print one worked 
powerUpBooleans[1].boolean = false // print two worked 
+0

これは答えです – WMios

+0

Thx buddy it works – NoKey

関連する問題