Objective c 在swift-3中访问NS类型类别
我已经用Obj-C编写了Objective c 在swift-3中访问NS类型类别,objective-c,swift3,Objective C,Swift3,我已经用Obj-C编写了NSData类别的base64编码 @interface NSData (Base64) + (NSData*)dataFromBase64String:(NSString*)aString; - (NSString*)base64EncodedString; @end 最初在Swift 2.2中,我将其用作: let dbPassData = NSData(fromBase64String: password) 现在,在Swift 3中,没有任何NSData,而
NSData
类别的base64编码
@interface NSData (Base64)
+ (NSData*)dataFromBase64String:(NSString*)aString;
- (NSString*)base64EncodedString;
@end
最初在Swift 2.2中,我将其用作:
let dbPassData = NSData(fromBase64String: password)
现在,在Swift 3中,没有任何NSData
,而是有数据
如何在swift 3中使用这些分类方法?
将project转换为Swift 3后,它将该行转换为:
let dbPassData = Data(fromBase64String: password)
这会产生一个错误:
参数标签与任何可用重载都不匹配
在Swift 3中,苹果还重命名了一些初始值设定项,Xcode 8 beta在从2.2转换为3时犯了一些错误
在这种情况下,初始值设定项被重命名为:
let data = Data(base64Encoded: "hello")
当你面临这样或类似的问题时,你可以开始键入ClassName(
并查看建议的初始值设定项。在大多数情况下,你会很容易找到新的初始值设定项。在Swift 3中,苹果也重命名了一些初始值设定项,Xcode 8 beta在从2.2转换到3时会犯一些错误
在这种情况下,初始值设定项被重命名为:
let data = Data(base64Encoded: "hello")
当您遇到此问题或类似问题时,可以开始键入ClassName(
并查看建议的初始值设定项。在大多数情况下,您会很容易找到新的初始值设定项。NSData
在Swift 3中仍然可用,就像String
与NSString
共存一样。在这种情况下,您需要忽略编译器的建议:
let dbPassData = NSData(fromBase64String: password) as Data
这假设您不想将您的Base64
类别移植到Swift,或者您想保持与Obj-C代码的兼容性。Swift 3的数据
还提供内置的Base64转换:
let dbPassData = Data(base64Encoded: password)
let base64String = data.base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed])
NSData
在Swift 3中仍然可用,就像String
与NSString
共存一样。在这种情况下,您需要忽略编译器的建议:
let dbPassData = NSData(fromBase64String: password) as Data
这假设您不想将您的Base64
类别移植到Swift,或者您想保持与Obj-C代码的兼容性。Swift 3的数据
还提供内置的Base64转换:
let dbPassData = Data(base64Encoded: password)
let base64String = data.base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed])