1
let username = "operator"
let password = "pass"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromMask(0))

// create the request
let url = NSURL(string: "myurl")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "GET"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")

The above code was working fine pre-Xcode 6.1 but now I get an error on the base64LoginString constant.

/Users/Joel/Project/MapViewController.swift:31:74: 'NSDataBase64EncodingOptions.Type' does not have a member named 'fromMask'

I am relatively new to Swift and would like to also ask some advice as to how I should go about solving this sort of issue without having to post to StackOverflow.

jskidd3
  • 4,609
  • 15
  • 63
  • 127

1 Answers1

3

The fromMask() constructor does not exist anymore in the current version of Swift. To specify "no option", use

let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))

or simply

let base64LoginString = loginData.base64EncodedStringWithOptions(nil)

For Swift 2 (compare https://stackoverflow.com/a/32499968/1187415):

let base64LoginString = loginData.base64EncodedStringWithOptions([])

For Swift 3:

let base64LoginString = loginData.base64EncodedString()
Community
  • 1
  • 1
Martin R
  • 529,903
  • 94
  • 1,240
  • 1,382
  • 1
    Note that using `nil` will generate an "Incompatible pointer to integer conversion..." warning – mokagio Jan 05 '15 at 03:23
  • @mokagio: `loginData.base64EncodedStringWithOptions(nil)` compiles without any warnings in my Xcode 6.1.1. – Martin R Jan 05 '15 at 06:36