2015-07-25 14 views
9

Câu hỏi này thực sự đơn giản, nhưng bằng cách nào đó tôi không biết cách thực hiện:Làm cách nào để chuyển đổi UnsafeMutablePointer <Void> thành UInt8?

Làm cách nào để chuyển đổi UnsafeMutablePointer thành UInt8?

Tôi đã cố gắng chuyển đổi nó như thế này:

UInt8(theUnsafeMutablePointerVar) 

nhưng nó đã cho tôi những lỗi sau: Không thể tìm thấy một initializer cho loại 'uint8' chấp nhận một danh sách đối số kiểu 'UnsafeMutablePointer'

Trả lời

14

Bạn phải chuyển đổi con trỏ thành loại chính xác đầu tiên (một con trỏ đến UInt8) và sau đó bạn có thể truy cập vào bộ nhớ nó trỏ đến:

let u8 = UnsafePointer<UInt8>(theUnsafeMutablePointerVar).memory 

Trong Swift 3, một con trỏ void từ C được nhập khẩu để Swift như UnsafeMutableRawPointer, và người ta có thể đọc nhọn để dữ liệu với

let u8 = theUnsafeMutablePointerVar.load(as: UInt8.self) 
+3

'UnsafePointer (theUnsafeMutablePointerVar) 'chỉ cần không làm việc cho tôi. 'Không thể gọi trình khởi tạo cho loại 'UnsafePointer ' với một danh sách đối số của loại '(UnsafeMutablePointer )''. Tương tự nếu tôi thử 'UnsafeMutablePointer ' thay vì 'UnsafePointer'. – HughHughTeotl

+0

Bạn đang sử dụng phiên bản Xcode nào? –

+0

Phiên bản 7.3.1 (7D1014) – HughHughTeotl

Các vấn đề liên quan