Francesco Pedron
11/23/2023, 4:02 PMsuspend fun onDataReceived(data: ByteArray)
that is translated to this swift signature
func onDataReceived(data: Skie.Stdlib.ByteArray.__Kotlin) async throws
How should I convert a swift [UInt8]
to a Skie.Stdlib.ByteArray
?
ThanksFilip Dolník
11/23/2023, 4:10 PMSkie.Stdlib.ByteArray.__Kotlin
is just a typealias to the Kotlin ByteArray, so the conversion works the same as without SKIE.Francesco Pedron
11/23/2023, 4:12 PMFrancesco Pedron
11/23/2023, 4:16 PMDarron Schall
11/23/2023, 5:33 PM[UInt8]
to `Data`:
extension Array where Element == UInt8 {
var data: Data {
return Data(self)
}
}
Use this Kotlin helper to convert NSData
to Kotlin `ByteArray`:
// Create in file named NSDataExtensions.kt
@OptIn(ExperimentalForeignApi::class)
fun NSData.toByteArray() = ByteArray(length.toInt()).apply {
usePinned {
memcpy(it.addressOf(0), bytes, length)
}
}
Then, in your Swift code, usage is:
let bytes: [UInt8] = [2, 1, 3, 5]
let kotlinByteArray = NSDataExtensionsKt.toByteArray(bytes.data)