2017-05-10 9 views
0

Ich entschied mich, mit Schließungen zu gehen, wenn ein Wert einer Eigenschaft in meiner Klasse, aber dieser Wert hängt von einem Singleton-Wert (Benutzername protokolliert).Eigenschaft Schließung kann meine Singleton freigegebenen Eigenschaften nicht sehen

class BrokerTVC: NSViewController, DBTable { 

@IBOutlet weak var table: NSTableView! 

var mainRequest = {() -> String in 
    switch LoggedUser.shared.type{ 
    case LoggedUser.shared.admin: 
     return "select * from broker where approved = true" 
    case LoggedUser.shared.client: 
     return "select * from broker where approved = true and ..." 
    default: return "" 
    } 
    return "" 
}} 

class LoggedUser{ 
    var type: Roles? 
    var iD: String 
    var username: String 

    static let shared = LoggedUser() 

    private init(){ 
     type = .admin 
     iD = "(xx, xxxxxx)" 
     username = "root" 
}} 

Irgendwie dieser Verschluss erkennt nicht die shared Eigenschaft dieses Singleton (Wert vom Typ „LoggedUser“ muss nicht „admin“). Verpasse ich einige Kernprinzipien, wie Schließungen funktionieren?

Antwort

1

Alles ist in Ordnung mit einem Verschluss. Es scheint, dass Roles ein optionaler Enum-Wert ist - also sollten Sie es so machen.

var mainRequest = {() -> String in 
    if let type = LoggedUser.shared.type { 
     switch type { 
      case .admin: 
      case .client: 
      default: return "" 
     } 
    } 
    return "" 
}} 
+0

Der Grund war, weil Singleton Eigenschaft 'Baumuster zur einer optionalen Art war, so hatte ich es in einem' Schalter' Aussage –

+0

Nun auszupacken, das eine andere Sache ist :) ich meine Antwort aktualisiert –

Verwandte Themen