2016-08-31 68 views
1

我在012j中編寫了Obj-C的NSData類別。在swift-3中訪問NS類型的類別

@interface NSData (Base64) 

+ (NSData*)dataFromBase64String:(NSString*)aString; 
- (NSString*)base64EncodedString; 

@end 

最初在斯威夫特2.2,我用它作爲:現在

let dbPassData = NSData(fromBase64String: password) 

,斯威夫特3,沒有任何NSData,反而有Data

如何在swift 3中使用這些類別方法?


轉換項目夫特3後,將其轉換該線路爲:

let dbPassData = Data(fromBase64String: password) 

這產生了一個錯誤:

Argument labels do not match any available overloads

回答

0

在夫特3,蘋果也更名一些初始化和Xcode 8 beta在從2.2轉換爲3時會發生一些錯誤。

在那個cas即,初始化被重命名爲這樣的:

let data = Data(base64Encoded: "hello") 

當你面臨這樣或類似的問題,你可以開始輸入ClassName(,並期待在擬議的初始化。在大多數情況下,你會很容易地找到新的。

0

NSData仍然可以在Swift 3中使用,就像String已經與NSString共存一樣。你需要在這種情況下忽略編譯器的建議是:

let dbPassData = NSData(fromBase64String: password) as Data 

這是假設你不希望你的端口類Base64斯威夫特還是要保持所有與obj-C代碼的兼容性。 Swift 3的Data還提供內置Base 64轉換功能:

let dbPassData = Data(base64Encoded: password) 
let base64String = data.base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed])