[英]Accessing NS Type class category in swift-3
我用Obj-C編寫的base64Encoding
NSData
類別。
@interface NSData (Base64)
+ (NSData*)dataFromBase64String:(NSString*)aString;
- (NSString*)base64EncodedString;
@end
最初在Swift 2.2中,我使用它作為:
let dbPassData = NSData(fromBase64String: password)
現在,在Swift 3中,沒有任何NSData
,而是擁有Data
。
如何在swift 3中使用這些類別方法?
將項目轉換為Swift 3后,它將該行轉換為:
let dbPassData = Data(fromBase64String: password)
產生錯誤:
參數標簽與任何可用的重載都不匹配
在Swift 3中,Apple還重命名了一些初始化程序,而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的Data
還提供內置的Base 64轉換:
let dbPassData = Data(base64Encoded: password)
let base64String = data.base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.