我一直在尝试在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)
答案 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