Add extension to convert objects of type Data to instances of NSMutableData

This process is necessary because of an issue (https://github.com/golang/go/issues/33745) in gomobile. Passing bare Data objects to Go functions leads to nondeterministic behavior.
This commit is contained in:
Danny Moesch 2019-09-08 12:47:10 +02:00 committed by Mingshen Sun
parent bfeb39f510
commit 4c3aa4938d
2 changed files with 23 additions and 0 deletions

View file

@ -0,0 +1,19 @@
//
// Data+Mutable.swift
// passKit
//
// Created by Danny Moesch on 08.09.19.
// Copyright © 2019 Bob Sun. All rights reserved.
//
extension Data {
/// This computed value is only needed because of [this](https://github.com/golang/go/issues/33745) issue in the
/// golang/go repository. It is a workaround until the problem is solved upstream.
///
/// The data object is converted into an array of bytes and than returned wrapped in an `NSMutableData` object. In
/// thas way Gomobile takes it as it is without copying. The Swift side remains responsible for garbage collection.
var mutable: NSMutableData {
var array = [UInt8](self)
return NSMutableData(bytes: &array, length: count)
}
}