2016-09-14 4 views
2

내 작업을 NSData 빠른 2.2 코드를 변환하는 시간의 지옥을 데에있는 NSData UnsafePointer 작업을 변환하고, 내가 할 수있는 컴파일을 통해 변환을 확인하십시오. 여기에 원래의 라인은 다음과 같습니다 내가 하나 개의 파일에 모두 비슷 오류의 여지가 3.</p> <p>에 스위프트 3

let dataPtr = UnsafePointer<UInt8>(bytes).advancedBy(f_offset) 

let retVal = UnsafePointer<T>(dataPtr).memory 

나는 첫 번째 줄이 변환됩니다 생각 :

let dataPtr = UnsafeRawPointer(bytes).advanced(by: f_offset) 

나는 메모리의 구성원이 아니기 때문에, 두 번째 줄을 변환하는 방법을 알아낼 수 없습니다 UnsafeRawPointer, Swift 3이 필요로하는 것 같습니다.

어떻게이 두 줄을 변환 할 수 있습니까?

보다 구체적인 오류가 발생하는 경우 게시하겠습니다.

+0

다음이 도움이 될 수 있습니다. tp : //stackoverflow.com/questions/38983277/how-to-get-bytes-out-of-an-unsafemutablerawpointer –

+0

감사. 몇 가지 다른 라인을 가지고 조금 도움이되었지만, 내 주요 문제는 아닙니다. 질문 업데이트를하고 있습니다. – Siriss

답변

1

은 당신의 bytes 것은 일부 NSDatabytes 속성에서 촬영되었다고 가정 :

let bytes = nsData.bytes 

이 그럼 당신은 UnsafeRawPointer(_:) 사용할 필요가 없다 :

let dataPtr = bytes.advanced(by: f_offset) 

을 그리고 UnsafeRawPointer하는 방법을 사용할 수 있습니다 :

let retVal = dataPtr.load(as: T.self)