【问题标题】:SWIFT ONLY -- Reading from NSInputStream [closed]仅 SWIFT——从 NSInputStream 读取 [关闭]
【发布时间】:2014-09-10 11:52:03
【问题描述】:

您能解释一下如何正确读取 NSInputStream 吗?

我不明白什么是 UnsafePointer 以及它的用途(也适用于 UnsafeArray)。

NSInputStream 读取函数得到一个 CMutablePointer,可以用 UnsafePointer 对象填充。

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

你会推荐什么?

谢谢!

【问题讨论】:

标签: swift nsstream nsinputstream


【解决方案1】:

我自己弄明白了。

看看这个简单的代码:

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"

说明: read 方法签名: stream.read(, maxLength: )

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

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

【讨论】:

  • 在文档中很难找到将 & 运算符与数组一起使用会返回 UnsafeMutablePointer。没有这些知识,真的很难弄清楚如何去做你所做的事情。所以谢谢!
猜你喜欢
  • 2015-07-13
  • 2021-07-16
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 2016-12-17
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多