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

时间:2014-06-03 19:19:19

标签: string swift cocoa nsdata

我一直在尝试在Swift中初始化来自NSData的字符串。

NSString Cocoa Documentation Apple说你必须使用它:

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

但Apple没有包含任何使用示例或放置init的位置。

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

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

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

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

6 个答案:

答案 0 :(得分:278)

这是所需的实施代码:

Swift 3.0中的

var dataString = String(data: fooData, encoding: String.Encoding.utf8)

或只是

var dataString = String(data: fooData, encoding: .utf8)

较旧的版本:

Swift 2.0中的

import Foundation

var dataString = String(data: fooData, encoding: NSUTF8StringEncoding)
Swift 1.0中的

var dataString = NSString(data: fooData, encoding:NSUTF8StringEncoding)

答案 1 :(得分:218)

这是您应该初始化NSString

的方法

Swift 2.X或更早

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

Swift 3或更新版本:

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

This doc解释了语法。

答案 2 :(得分:4)

从Swift的第三个版本开始,您可以执行以下操作:

let desiredString = NSString(data: yourData, encoding: String.Encoding.utf8.rawValue)

与Sunkas建议的相似。

答案 3 :(得分:3)

import Foundation
var string = NSString(data: NSData?, encoding: UInt)

答案 4 :(得分:2)

基于扩展的另一个答案(男孩,我在Java中想念这个):

extension NSData {
    func toUtf8() -> String? {
        return String(data: self, encoding: NSUTF8StringEncoding)
    }
}

然后你可以使用它:

let data : NSData = getDataFromEpicServer()
let string : String? = data.toUtf8() 

请注意,该字符串是可选的,初始NSData可能无法转换为Utf8。

答案 5 :(得分:0)

目标 - C

NSData *myStringData = [@"My String" dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *myStringFromData = [[NSString alloc] initWithData:myStringData encoding:NSUTF8StringEncoding];
NSLog(@"My string value: %@",myStringFromData);

夫特

//This your data containing the string
   let myStringData = "My String".dataUsingEncoding(NSUTF8StringEncoding)

   //Use this method to convert the data into String
   let myStringFromData =  String(data:myStringData!, encoding: NSUTF8StringEncoding)

   print("My string value:" + myStringFromData!)

http://objectivec2swift.blogspot.in/2016/03/coverting-nsdata-to-nsstring-or-convert.html