SWIFT ONLY - 从NSInputStream读取

时间:2014-07-19 12:16:22

标签: swift nsstream nsinputstream

请问您如何从NSInputStream中正确阅读?

我无法理解什么是UnsafePointer以及它的用途(也适用于UnsafeArray)。

NSInputStream读取函数获取一个可以用UnsafePointer对象填充的CMutablePointer。

与Java的Streams相比,这真是一团糟。

你会推荐什么?

谢谢!

1 个答案:

答案 0 :(得分:22)

我自己已经弄清楚了。

看看这个简单的代码:

let data: NSData = "Jonathan Yaniv.".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
let stream: NSInputStream = NSInputStream(data: data)

var buffer = [UInt8](count: 8, repeatedValue: 0)

stream.open()

if stream.hasBytesAvailable {
    let result :Int = stream.read(&buffer, maxLength: buffer.count)
}

//  result = 8 -- because of the size of the buffer.
//  buffer contains the first 8 bytes repreenting the word "Jonathan"

说明: 读取方法签名:     stream.read(< #buffer:UnsafeMutablePointer#>,maxLength:< #Inst#>)

它将UnsafeMutablePointer作为第一个参数,这意味着该方法希望获得一个类型为UInt8的数组的POINTER - 不是数组本身

因此,我们添加&缓冲区变量名称前的表示法。 & buffer ==指向名为buffer的UInt8数组对象的指针。