Writing Data to an NSOutputStream in Swift 3

后端 未结 4 957
谎友^
谎友^ 2020-12-14 04:37

The solution of this question no longer works with Swift 3.

There is no longer a property bytes of Data (formerly NSData.

4条回答
  •  难免孤独
    2020-12-14 05:17

    Just use this extension:

    Swift 5

    extension OutputStream {
      func write(data: Data) -> Int {
        return data.withUnsafeBytes {
          write($0.bindMemory(to: UInt8.self).baseAddress!, maxLength: data.count)
        }
      }
    }
    

    And for InputStream

    extension InputStream {
      func read(data: inout Data) -> Int {
        return data.withUnsafeMutableBytes {
          read($0.bindMemory(to: UInt8.self).baseAddress!, maxLength: data.count)
        }
      }
    }
    

    Swift 4

    extension OutputStream {
      func write(data: Data) -> Int {
        return data.withUnsafeBytes { write($0, maxLength: data.count) }
      }
    }
    extension InputStream {
      func read(data: inout Data) -> Int {
        return data.withUnsafeMutableBytes { read($0, maxLength: data.count) }
      }
    }
    

提交回复
热议问题