Using a Swift String with NSData without NSString Using a Swift String with NSData without NSString ios ios

Using a Swift String with NSData without NSString


As of Swift 1.2 they aren't quite interchangeable, but they are convertible, so there's really no reason not to use NSString and its constructors when you need to. This will work fine:

var datastring = NSString(data:data, encoding:NSUTF8StringEncoding) as! String

The as! is needed because NSString(...) can return nil for invalid input - if you aren't sure that the data represents a valid UTF8 string, you may wish to use the following instead to return a String? (aka Optional<String>).

var datastring = NSString(data:data, encoding:NSUTF8StringEncoding) as String?

Once constructed, you can then use datastring just like any other Swift string, e.g.

var foo = datastring + "some other string"


var buffer = [UInt8](count:data.length, repeatedValue:0)data.getBytes(&buffer, length:data.length)var datastring = String(bytes:buffer, encoding:NSUTF8StringEncoding)


In Swift 2.0 You can do something like this:-

import Foundationvar dataString = String(data: YourData, encoding: NSUTF8StringEncoding)

In Swift 3.0 :-

import Foundationvar dataString = String(data: data, encoding: String.Encoding.utf8)