2016-10-28 2 views
-1

ich so etwas in meinem Projekt haben:Shop ein Zeiger auf einen booleschen Wert in einem Tupel

struct buttonFlag { 
    var flag: Bool 
    var button: UIButton 
} 

var bool1: Bool = false 
var bool2: Bool = false 
var bool3: Bool = false 

var obj1: UIButton = UIButton() 
var obj2: UIButton = UIButton() 
var obj3: UIButton = UIButton() 

let buttonFlags: buttonFlag = [buttonFlag(bool1, obj1), buttonFlag(bool2, obj2), buttonFlag(bool3, obj3)] 

Statt die Werte Boo1 und Flagge der Handhabung getrennt ich den Wert der Flagge wollen Referenz eine Art gehen zu sein auf den Wert der booleschen Werte (bool1..3). Gibt es eine speichereffiziente Möglichkeit, dies zu tun?

+0

Sie sind Frage ist wirklich unklar. Können Sie bitte Details hinzufügen? – Alexander

+1

Ein Zeiger ... in Swift? Bist du sicher, dass du das willst? –

+0

Können Sie den Code, den Sie jetzt haben, posten und darauf hinweisen, wo Sie das Problem vermuten? –

Antwort

0

Wenn Sie einfach ein Instanz-eindeutiges boolesches Flag für jede Instanz von UIButton möchten, können Sie einfach die letztere unterklassifizieren, indem Sie der abgeleiteten Klasse eine einzelne Bool-Eigenschaft hinzufügen.

class MyUIButton: UIButton { 
    var flag: Bool = false 
} 

Sie würden behandeln Instanzen Sie benutzerdefinierte Unterklasse MyUIButton so wie Sie Instanzen von seiner übergeordneten Klasse behandeln würden, mit dem Zusatz, dass Sie nun Zugriff auf flag Eigenschaft für jede Schaltfläche Instanz haben.

konstruiertes Beispiel Nutzung:

let btn1 = MyUIButton() 
let btn2 = MyUIButton() 
let btn3 = MyUIButton() 

let buttons = [btn1, btn2, btn3] 

btn1.flag = true 
btn3.flag = true 

for btn in buttons where btn.flag { 
    // ... do something with btn1 and btn3 
} 
+0

Das würde mein Problem nicht lösen, weil ich immer noch den Wert von zwei Variablen ändern müsste. – Raoul

+0

@Raoul Ich könnte missverstehen, was Sie wollen: aber egal wie Ihre Herangehensweise ist, wenn Sie wissen wollen, ob eine Schaltfläche angeklickt wurde oder nicht (und speichern Sie dieses Wissen in einer 'bool' Instanz), müssten Sie bei der zumindest eine Eigenschaft, die mit dieser Instanz der Schaltfläche verknüpft ist, und/oder eine Aktion, die bei einem Ereignis für die Schaltfläche ein Ziel auslöst (z. B. angeklickt). In Anbetracht dessen ist es einfach, eine einzelne Eigenschaft der Instanz der Schaltfläche festzulegen, die diese Ereignisse auslöst. – dfri

+0

danke für die Antwort. Ich überlegte meinen Ansatz und kam zu dem Schluss, dass es sinnvoller und einfacher wäre, eine Unterklasse von UIButton zum Speichern der Flagge zu verwenden. – Raoul

Verwandte Themen