如何在Swift中从NSData初始化字符串


173

我一直在尝试从NSDataSwift中初始化一个字符串。

苹果在NSString Cocoa文档中说您必须使用以下代码:

 init(data data: NSData!, encoding encoding: UInt)

但是,苹果没有提供任何用法或放置示例的示例init

我正在尝试将以下代码从Objective-C转换为Swift

NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

我一直在尝试许多可能的语法,例如以下语法(当然它不起作用):

var string:NSString!
string = init(data: fooData,encoding: NSUTF8StringEncoding)

Answers:


224

这是您应该如何初始化NSString

Swift 2.X或更旧版本

let datastring = NSString(data: fooData, encoding: NSUTF8StringEncoding)

Swift 3或更高版本:

let datastring = NSString(data: fooData, encoding: String.Encoding.utf8.rawValue)

本文档说明了语法。


2
请注意,您不需要像这样重复“数据”和“编码”。
jbg

19
应该是let datastring = NSString(data: fooData, encoding:NSUTF8StringEncoding)
Yas T.

14
是否可以NSData直接转换为Swift String(而不是NSString)?
ma11hew28

3
@MattDiPasquale var swiftString = NSString(data:NSData !, encoding:UInt)as!仅此而已的弦乐
银魂

11
@MattDiPasquale忽略以上强制转换;StringNSString...所有这些都应该是:var datastring = String(data: someData, encoding: NSUTF8StringEncoding)
JRaymond 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.