Theo tài liệu của Dữ liệu trong Swift 3, có một trình khởi tạo mà tôi có thể sử dụng để tạo Dữ liệu từ UnsafeRawPointer. Điều tôi cần thực sự là ngược lại. Tôi có một dữ liệu, và tôi muốn tạo ra một UnsafeRawPointer trỏ đến các byte của dữ liệu. Dưới đây là những gì tôi đang làm ngay bây giờ:Trong Swift 3, làm cách nào để lấy UnsafeRawPointer từ Dữ liệu?
1. let data = <from some where>
2. let unsafePointer = UnsafeMutablePointer<UInt8>.allocate(capacity: data.count)
3. unsafePointer.initialize(to: 0, count: data.count) // is this necessary?
4. data.copyBytes(to: unsafePointer, count: data.count)
5. let unsafeRawPointer = unsafePointer.deinitialize() // this is of the type UnsafeMutalbleRawPointer, and I can use it where UnsafeRawPointer is needed.
Tôi đã xác minh rằng mã này hoạt động trong Xcode Playground. Mã này thậm chí hoạt động mà không có số dòng 3. Tôi không chắc chắn sự khác biệt có hoặc không có dòng. Dù sao, câu hỏi của tôi là, tôi đang làm đúng cho những gì tôi muốn? Có cách nào đơn giản hơn để làm điều đó không?
Các giải pháp trông đẹp hơn và sạch hơn so với tôi. Và thứ hai là khá thẳng về phía trước quá. – Jake
Có vẻ như 'withUnsafeBytes' là một trong những quyền đối với tôi. Có vẻ an toàn hơn giải pháp NSData – Jake
'withUnsafeBytes' có vẻ bị giới hạn. Điều gì xảy ra nếu tôi muốn một số gợi ý để thực hiện các hoạt động trên tất cả chúng? – ryantxr