仅限SWIFT--从NSInputStream读取

仅限SWIFT--从NSInputStream读取,swift,nsstream,nsinputstream,Swift,Nsstream,Nsinputstream,请您解释一下如何正确阅读NSInputStream 我不明白什么是unsafeapointer,它有什么用(也是UnsafeArray) NSInputStream读取函数获取一个CMutablePointer,该指针可以用非安全指针对象填充 与Java的流相比,这真是一团糟 你推荐什么 谢谢大家! 我自己已经弄明白了 请看以下简单代码: let data: NSData = "Jonathan Yaniv.".dataUsingEncoding(NSUTF8StringEncoding, al

请您解释一下如何正确阅读NSInputStream

我不明白什么是unsafeapointer,它有什么用(也是UnsafeArray)

NSInputStream读取函数获取一个CMutablePointer,该指针可以用非安全指针对象填充

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

你推荐什么


谢谢大家!

我自己已经弄明白了

请看以下简单代码:

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(,maxLength:)

它获取一个unsafemeutablepointer作为第一个参数,这意味着该方法希望获取一个指向UInt8-类型数组的指针,而不是数组本身的指针

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

如果是混乱的,请不要将其与Java进行比较,而是阅读Swift的基础知识:在文档中很难找到将&运算符与数组一起使用会返回一个不可分配的指针。如果没有这些知识,你真的很难想出怎么做。谢谢!