2015-02-06 32 views
0

我今天更新了XCode。我正在使用XCode 6.1.1。更新后,我得到这条线的错误。Swift:将字符串解码为NSData以在ImageView中显示图像

let decodedData = NSData(base64EncodedString: jsonDict["binary"] as NSString, options: NSDataBase64DecodingOptions(rawValue: 0)!) 

错误消息是:类型'字符串'不符合协议'NSCopying'。

我想解码一个字符串到NSData在imageView中显示图像。 jsonDict是一个NSDictionary。 这里有什么问题?谁能帮忙?

由于

回答

1

问题是jsonDict["binary"]返回一个Optional(其可以是零)。您需要首先解开它:

if let str: String = jsonDict["binary"] { 
    let decodedData = NSData(base64EncodedString: str, options: NSDataBase64DecodingOptions(0)) 
} 
+0

这解决了我的问题。非常感谢你。这次更新似乎有一些改变。我正在使用FireSocket进行Websocket连接。它不再工作。我在FireSocket.swift中有太多的错误。你知道XCode 6.1.1的替代库吗? – masterWN 2015-02-06 15:47:57

+0

@masterWN不,我不知道FireSocket ...也许试着问另一个问题。 – 2015-02-06 15:50:04

0

这里的问题是NSDataBase64DecodingOptions(rawValue: 0)!!NSDataBase64DecodingOptionsinit(rawValue:)是非Optional

@availability(iOS, introduced=7.0) 
struct NSDataBase64DecodingOptions : RawOptionSetType { 
    init(_ rawValue: UInt) 
    init(rawValue: UInt) 

所以你不需要!在这里。为了更好,您可以在这里使用nil

NSData(base64EncodedString: jsonDict["binary"] as NSString, options: nil)