2016-07-11 152 views
-3

我有麻煩從NSURLSession獲取字符串。 下面的代碼連接到我的服務器,它應該返回一個Base64字符串。Base64是一個NSString而不是一個字符串

我得到的只是一個NSString。 在這篇文章的末尾是一個輸出示例。 爲什麼在字符串前添加「可選」?如何將這個字符串保存到一個變量?我需要String來解碼Base64。

let url = NSURL(string: "url here") 

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
     print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
    } 

    task.resume() 

輸出:

Optional(base64String...) 
+4

更多關於斯威夫特的選配正如你必須瞭解選配一個斯威夫特程序員。閱讀手冊:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

回答

0

init?(data:encoding:)返回一個可選NSString,因爲它的(非常)可能對於給定的數據不表示與提供的編碼類型編碼的有效字符串的初始化。在這種情況下,而不是崩潰,拋出錯誤或返回字符串,如"error",它返回nil,Swift編譯器要求您處理。

您可以瞭解The Swift Language Guide (Swift 2.2) - The Basics - Optionals

+0

感謝您的回覆。我讀了你的鏈接。如果我理解正確,我所要做的就是改變NSString(數據,編碼)! < - 但我仍然有問題,我無法將其保存到變量。 – qwdtimes2

+0

對不起,我發表評論爲快。你讀過它嗎?我會將它標記爲接受:) – qwdtimes2

+1

我建議不要使用強制解包操作符('!')。這是迄今爲止Swift程序崩潰的最常見原因。 「你仍然認爲我無法將它保存到變量中的問題是什麼意思?」? – Alexander

相關問題