let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
和
let dataString=NSString(bytes: &data, length: sizeof(UInt8), encoding: NSUTF8StringEncoding)
不幸的是,編譯器會引發第二行的錯誤,認爲它不能分配給NSData類型的不可變值。我將如何去將我的原始data
變量轉換爲編碼SUTF8StringEncoding
的字符串?
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
和
let dataString=NSString(bytes: &data, length: sizeof(UInt8), encoding: NSUTF8StringEncoding)
不幸的是,編譯器會引發第二行的錯誤,認爲它不能分配給NSData類型的不可變值。我將如何去將我的原始data
變量轉換爲編碼SUTF8StringEncoding
的字符串?
更新:的Xcode 7.2•斯威夫特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"
}
謝謝萊昂納多!這對我有效。此外,你們都說過同樣的事情,但保羅後來回答,所以我選擇你們作爲答案。 –
@RossM。歡迎您光臨 –
我並不很清楚你想達到什麼樣的,因爲它沒有解釋什麼positionValue
是(這似乎是一些字節值)。
無論如何,錯誤信息都是由於您使用了&
而產生的常量(由let
創建)引起的。 &
提供了一個不安全的指針,它允許對包含常量值的內存進行操作,但不能更改常量,所以Swift會給出錯誤消息。
如果更改第一行改爲
var data = NSData(bytes: &positionValue, length: sizeof(UInt8))
然後data
不再是一個常數,而是一個變量,你可以使用&
它。
說了這麼多,因爲data
包含要轉換爲字符串的字節(S),你就可以說
let data = NSData(bytes: &positionValue, length: sizeof(UInt8))
let dataString=NSString(data: data, encoding: NSUTF8StringEncoding)
謝謝保羅!我欣賞背景解釋!您發佈的代碼適合我。 –
http://stackoverflow.com/a/28522827/2303865 –
萊昂納多,有沒有辦法避免使用擴展來實現這個解決方案?對不起,如果這是一個愚蠢的問題,但我是新的斯威夫特。 –