0

swift3の次の行でエラーが発生します。

out = UnsafeMutablePointer<Bytef>(data.mutableBytes)

'UnsafeMutablePointer<Bytef>'タイプ '(UnsafeMutableRawPointer)' の引数リストを持つタイプの初期化子を呼び出すことはできません

4

1 に答える 1

1

あなたが求めていることを 100% 理解しているとは言えませんが、swift3 ではデータ ポインターの処理方法が多少変更されています。

Swift2

Swift2 でデータ ストリームから実際のバイトにアクセスしたい場合、データを安全でない変更可能なポインターにキャストし[UInt8]、データ ストリーム内のすべてのバイトを直接参照する配列を指す、いくつかのファンキーなポインター操作を行います。

あなたが尋ねていることから、あなたは過去に似たようなことをしようとしていたようです。

Swift3

withUnsafeBytesこれで、 との 2 つのコマンドができwithUnsafeMutableBytesました。Swift2では、バイトを取得してポインター配列にキャストすることでデータを操作していました(あなたがしているように見えるものと同様です)。

Swift 3 では、次のようなことができるようになりました。

return data.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) -> Bool in
        return 1 ==  Int((bytes[1] & 0x2) >> 1)
}

またはこれ:

rawData.withUnsafeMutableBytes {
            (bytes: UnsafeMutablePointer<UInt8>) -> Void in
            bytes[0] = newValue.rawValue
        }

これはあなたが探しているものですか?

于 2016-10-24T09:36:33.337 に答える