2016-09-26 9 views
4

어떻게 스위프트 3에이 방법을 쓸 수 있습니까? FileHandle에서 읽기스위프트 3에서 NSFileHandle 사용

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

답변

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 }) 
    } 
} 

Data 값을 반환합니다. data.withUnsafeBytes은 바이트에 대한 포인터를 사용하여 클로저를 호출합니다. 여기에서 $0 포인터의 유형은 이라는 컨텍스트에서 UnsafePointer<UInt32>으로 추론됩니다.

UInt32(bigEndian:)CFSwapInt32BigToHost()의 대안으로 빅 엔디안 표현에서 정수를 생성합니다.

Data과 변환하는 방법에 대한 자세한 내용은 round trip Swift number types to/from Data을 참조하십시오.