雨燕1.2
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions(nil);
雨燕2
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions());
这两种方法产生了不同的结果,在Swift 2中我们不能再传入nil
;
apiLoginData.base64EncodedStringWithOptions(nil);
我也试过在Swift 2中传递NSDataBase64EncodingOptions.Encoding64CharacterLineLength
,但结果还是不一样。
有什么想法吗?
更新2:这不是Swift 1.2或Swift 2的问题。奇怪的是,这两个打印出不同的结果...什么F!!
UPDATE 3:正如Martin所指出的,我的API_USERNAME变量中有一些不可见的字符
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() {
//Base64
var loginString = NSString(format: "%@:%@", USERNAME, PASSWORD);
var loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64LoginString = loginData.base64EncodedStringWithOptions([]);
print("BASE 64 \(base64LoginString)");//RESULT YWJjOjEyMw==
let apiLoginString = NSString(format: "%@:%@", API_USERNAME, API_PASSWORD);
let apiLoginData: NSData = apiLoginString.dataUsingEncoding(NSUTF8StringEncoding)!;
var base64ApiLoginString = apiLoginData.base64EncodedStringWithOptions([]);
print("BASE 64 \(base64ApiLoginString)");// RESULT IS 4oGg4oGg4oGgYWJjOjEyMw==
}
1条答案
按热度按时间xuo3flqw1#
与Swift 2.0 calendar components error或Swift 2.0 - Binary Operator "|" cannot be applied to two UIUserNotificationType operands中类似,
NSDataBase64EncodingOptions
是Swift 2中的一个OptionSetType
。它提供了一个类似于集合的接口,可以从数组文字初始化。因此,有效选项包括:
完整示例: