2016-05-18 13 views
2

Ich schaue auf die .selection eines Array-Controllers und ich möchte wissen, wenn die Auswahl mehrere Werte oder keine ist. In ObjC würden wir dies tun, indem wir die Auswahl als id abrufen und ihre Rohgleichheit mit den verschiedenen Platzhaltermarkierungen überprüfen: NSMultipleValuesMarker, NSNoSelectionMarker und NSNotApplicableMarker.NSPlaceholders und Swift

Aber das funktioniert nicht in Swift:

let currentValue = eventsArrayController.selection.valueForKey("enabled") 

    if let markerVal = currentValue { 
     if markerVal == NSMultipleValuesMarker { 
      // this doesn't compile, AnyObject's can't be compared with == 
     } 
     switch markerVal { 
      case NSNoValueMarker: 
      // this doesn't compile, an AnyObject is not a valid pattern 
     } 
    } 

Wie teste ich den Wert des Platzhalter Markers in Swift?

Antwort

2

In Swift, == ist für die Überprüfung der Wert Gleichheit (das heißt, wenn zwei Objekte die gleichen Daten enthalten, unabhängig davon, ob sie den gleichen Speicherort teilen oder nicht). Verwenden Sie den Operator ===, um nach Referenzgleichheit zu suchen (die testet, ob zwei Objekte denselben Speicherort haben).

+0

Perfekt, danke! – iluvcapra