When I using NSOutputStream
\'s write
method
func write(_ buffer: UnsafePointer, maxLength length: Int) -> Int
Here is how to do it in Swift 3. Run fine in Swift 4 too
extension String {
func toPointer() -> UnsafePointer? {
guard let data = self.data(using: String.Encoding.utf8) else { return nil }
let buffer = UnsafeMutablePointer.allocate(capacity: data.count)
let stream = OutputStream(toBuffer: buffer, capacity: data.count)
stream.open()
data.withUnsafeBytes({ (p: UnsafePointer) -> Void in
stream.write(p, maxLength: data.count)
})
stream.close()
return UnsafePointer(buffer)
}
}
To convert from String
to UnsafeMutablePointer
let cString = strdup("Hello") // UnsafeMutablePointer
To convert from UnsafeMutablePointer
to String
let string = String(cString: cString!) // String