Swift 1.2
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions(nil);
Swift 2
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions());
These two approaches give different results. In Swift 2 we can no longer go through nil;
apiLoginData.base64EncodedStringWithOptions(nil);
I also tried going in NSDataBase64EncodingOptions.Encoding64CharacterLineLengthin Swift 2. But the results are still different
Any thoughts?
UPDATE 2: this is not a problem with Swift 1.2 or Swift 2. Oddly enough, these 2 print different results .. What is F !!
UPDATE 3: It turns out that, as Martin pointed out, I have an invisible character in my API_USERNAME variable
class RequestHelper: NSObject {
static var API_USERNAME: NSString = "abc";
static var API_PASSWORD: NSString = "123";
static var USERNAME: NSString = "abc"
static var PASSWORD: NSString = "123"
class func signUpUser() {
var loginString = NSString(format: "%@:%@", USERNAME, PASSWORD);
var loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64LoginString = loginData.base64EncodedStringWithOptions([]);
print("BASE 64 \(base64LoginString)");
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions([]);
print("BASE 64 \(base64ApiLoginString)");
}
source
share