3

I am just trying to set two flags for the debug options. Why is this a problem in Swift 4

enter image description here

rmaddy
  • 314,917
  • 42
  • 532
  • 579
john doe
  • 9,220
  • 23
  • 91
  • 167
  • Same problem as in https://stackoverflow.com/questions/30761996/swift-2-0-binary-operator-cannot-be-applied-to-two-uiusernotificationtype and https://stackoverflow.com/questions/30867325/binary-operator-cannot-be-applied-to-two-uiviewautoresizing-operands (from the "Related" section). – Martin R Jun 13 '17 at 05:18

2 Answers2

9

instead of doing "|", use a set:

sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints,ARSCNDebugOptions.showWorldOrigin]
Michael Dautermann
  • 88,797
  • 17
  • 166
  • 215
0

SCNDebugOptions confirm the protocol OptionSet, which confirm SetAlgebra protocol and SetAlgebra confirm ExpressibleByArrayLiteral protocol.

public struct SCNDebugOptions : OptionSet {...}
protocol OptionSet : RawRepresentable, SetAlgebra {...}
public protocol SetAlgebra : Equatable, ExpressibleByArrayLiteral {...}

That's why you can't use the pipe (|) sign for multiple arguments. instead, use an array.

sceneView.debugOptions = [.showFeaturePoints, .showWorldOrigin]
Tapas Pal
  • 7,073
  • 8
  • 39
  • 86