簡體   English   中英

在swift-3中訪問NS Type類類別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM