How to convert String to UnsafePointer and length

前端 未结 9 1097
萌比男神i
萌比男神i 2020-12-09 16:13

When I using NSOutputStream\'s write method

func write(_ buffer: UnsafePointer, maxLength length: Int) -> Int
         


        
9条回答
  •  感情败类
    2020-12-09 16:23

    You have to convert the string to UTF-8 data first

    let string = "foo bar"
    let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
    

    and then write it to the output stream

    let outputStream: NSOutputStream = ... // the stream that you want to write to
    let bytesWritten = outputStream.write(UnsafePointer(data.bytes), maxLength: data.length)
    

    The UnsafePointer() cast is necessary because data.bytes has the type UnsafePointer, and not UnsafePointer as expected by the write() method.


    Update for Swift 3:

    let string = "foo bar"
    // Conversion to UTF-8 data (cannot fail):
    let data = string.data(using: String.Encoding.utf8)! 
    
    // Write to output stream:
    let outputStream: NSOutputStream = ... // the stream that you want to write to
    let bytesWritten = data.withUnsafeBytes { outputStream.write($0, maxLength: data.count) }
    

提交回复
热议问题