2016-07-11 151 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

相关问题