How to pass multiple enum values as a function parameter

swift

Solution

Edit: In Swift 3.0:

let options: NSStringDrawingOptions = [.usesLineFragmentOrigin, .usesFontLeading]

Edit: This is how you would use the options enum in Swift 2.0:

let options: NSStringDrawingOptions = [.UsesLineFragmentOrigin, .UsesFontLeading]

Edit: The issue has been resolved in iOS 8.3 SDK Beta 1 (12F5027d):

Modified `NSStringDrawingOptions` [struct]

- From: `enum NSStringDrawingOptions : Int`

- To: `struct NSStringDrawingOptions : RawOptionSetType`

You can now write:

let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

After some research and and @Anton Tcholakov's "comment":

If you're targeting OS X 10.10, this is as simple way to do it:

let size = CGSize(width: 280, height: Int.max)
let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

let boundingRect = string.bridgeToObjectiveC().boundingRectWithSize(size, options: options, attributes: attributes, context: nil)

However, in iOS 8 SDK (in the current seed), there's a bug, where `NSStringDrawingOptions` is ported to Swift as `enum : Int`, instead of `struct : RawOptionSet`. You should send a bug report to Apple describing this serious problem.

Problem

How would I do the following - passing two NSStringDrawing options as a function parameter in swift: ``` CGRect boundingRect = [string boundingRectWithSize:CGSizeMake(280.0, NSIntegerMax) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:options context:nil]; ```

Original source

Related problems