在Swift 3上使用NSFileHandle

时间:2016-09-26 00:24:39

标签: swift swift3 nsfilehandle

我怎样才能在Swift 3中编写这个方法?

extension NSFileHandle {
    func readUInt32() -> UInt32? {
        let data = self.readDataOfLength(4)
        guard data.length == 4 else { return nil }
        return CFSwapInt32HostToBig(UnsafePointer<UInt32>(data.bytes).memory)
    }
}

1 个答案:

答案 0 :(得分:4)

extension FileHandle {
    func readUInt32() -> UInt32? {
        let data = self.readData(ofLength: 4)
        guard data.count == 4 else { return nil }
        return UInt32(bigEndian: data.withUnsafeBytes { $0.pointee })
    }
}

FileHandle读取会返回Data值。 data.withUnsafeBytes使用指针调用闭包 在这里,从上下文推断出指针$0的类型 为UnsafePointer<UInt32>

UInt32(bigEndian:)从其big-endian创建一个整数 表示,作为CFSwapInt32BigToHost()的替代。

有关如何从/转换为Data的更多示例,请参阅示例 this StackOverflow