NSInputStream から適切に読み取る方法を教えてください。
UnsafePointer とは何か、それが何に使用されるのか (UnsafeArray についても) 理解できませんでした。
NSInputStream 読み取り関数は、UnsafePointer オブジェクトで満たすことができる CMutablePointer を取得します。
Java の Streams と比較すると、かなり混乱しています。
あなたは何をお勧めします ?
ありがとうございました!
NSInputStream から適切に読み取る方法を教えてください。
UnsafePointer とは何か、それが何に使用されるのか (UnsafeArray についても) 理解できませんでした。
NSInputStream 読み取り関数は、UnsafePointer オブジェクトで満たすことができる CMutablePointer を取得します。
Java の Streams と比較すると、かなり混乱しています。
あなたは何をお勧めします ?
ありがとうございました!
私は自分でそれを理解しました。
次の簡単なコードを見てください。
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: <#Int#>)
最初のパラメーターとして UnsafeMutablePointer を取得します。つまり、メソッドは、配列自体ではなく、UInt8 型の配列への POINTER を取得することを想定しています。
したがって、バッファ変数の名前の前に & 表記を追加します。&buffer == buffer という名前の UInt8 配列オブジェクトへのポインター。