Details
- Xcode 11.2.1 (11B500), Swift 5.1
Solution 1
extension UnsafeMutablePointer {
func toArray(capacity: Int) -> [Pointee] {
return Array(UnsafeBufferPointer(start: self, count: capacity))
}
}
Usage of the solution 1
var array = [3.9, 7.7, 11.1, 1.11, 1.02, 3.3, 3.9, 0]
let pointer = UnsafeMutablePointer<Double>.allocate(capacity: array.count)
pointer.initialize(from: &array, count: array.count)
print(pointer.toArray(capacity: array.count))
Solution 2
extension Array {
init(pointer: UnsafeMutablePointer<Element>, count: Int) {
let bufferPointer = UnsafeBufferPointer<Element>(start: pointer, count: count)
self = Array(bufferPointer)
}
}
Usage of the solution 2
var array2 = [3.9, 7.7, 11.1, 1.11, 1.02, 3.3, 3.9, 0]
let pointer2 = UnsafeMutablePointer<Double>.allocate(capacity: array.count)
pointer2.initialize(from: &array, count: array.count)
print(Array(pointer: pointer2, count: array.count))