Swift 无法分配给 NSData 类型的不可变值
Swift Cannot Assign to immutable value of type NSData
我有
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
和
let dataString=NSString(bytes: &data, length: sizeof(UInt8), encoding: NSUTF8StringEncoding)
不幸的是,编译器在第二行抛出一个错误,说它不能分配给 NSData 类型的不可变值。我将如何将原始 data
变量转换为编码为 SUTF8StringEncoding
的字符串?
更新:Xcode 7.2 • Swift 2.1.1
let myTestString = "Hello World"
// converting from string to NSData
if let myStringData = myTestString.dataUsingEncoding(NSUTF8StringEncoding) {
// converting from NSData to String
let myStringFromData = String(data: myStringData, encoding: NSUTF8StringEncoding) ?? "Hello World"
}
我不太清楚你想要达到什么目的,因为没有解释 positionValue
是什么(它似乎是一些字节值)。
无论如何,错误消息是由于您将 &
与常量(由 let
创建)一起使用而产生的。 &
提供了一个不安全的指针,它允许对包含常量值的内存进行操作,但您不能更改常量,因此 Swift 给出错误消息。
如果将第一行改为
var data = NSData(bytes: &positionValue, length: sizeof(UInt8))
那么data
不再是常量,而是一个变量,你可以用&
。
说了那么多,因为 data
包含您要转换为字符串的字节,您可以直接说
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
let dataString=NSString(data: data, encoding: NSUTF8StringEncoding)
我有
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
和
let dataString=NSString(bytes: &data, length: sizeof(UInt8), encoding: NSUTF8StringEncoding)
不幸的是,编译器在第二行抛出一个错误,说它不能分配给 NSData 类型的不可变值。我将如何将原始 data
变量转换为编码为 SUTF8StringEncoding
的字符串?
更新:Xcode 7.2 • Swift 2.1.1
let myTestString = "Hello World"
// converting from string to NSData
if let myStringData = myTestString.dataUsingEncoding(NSUTF8StringEncoding) {
// converting from NSData to String
let myStringFromData = String(data: myStringData, encoding: NSUTF8StringEncoding) ?? "Hello World"
}
我不太清楚你想要达到什么目的,因为没有解释 positionValue
是什么(它似乎是一些字节值)。
无论如何,错误消息是由于您将 &
与常量(由 let
创建)一起使用而产生的。 &
提供了一个不安全的指针,它允许对包含常量值的内存进行操作,但您不能更改常量,因此 Swift 给出错误消息。
如果将第一行改为
var data = NSData(bytes: &positionValue, length: sizeof(UInt8))
那么data
不再是常量,而是一个变量,你可以用&
。
说了那么多,因为 data
包含您要转换为字符串的字节,您可以直接说
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
let dataString=NSString(data: data, encoding: NSUTF8StringEncoding)