这是我第一次对Kotlin Multiplatform进行实验,看来我还没有完全掌握一些知识。
我的后端通过UDP多播中的套接字发送通知消息(我可能需要在每个平台上实现此部分,因为我认为Kotlin不会为我做这件事)。然后,我想将此消息(以字节数组的形式)传递给我的通用模块。该模块负责解析消息并将结果返回到平台。
为了简化我的工作,我希望每个平台都返回test
消息的ByteArray。
这是我的common.kt
文件:
package org.kotlin.mpp.mobile
expect fun receivedEASNotification(): ByteArray
fun parseEASNotification(msg: ByteArray) {
// Use receivedEASNotification()
}
这是Android文件:
package org.kotlin.mpp.mobile
actual fun receivedEASNotification(): ByteArray {
return "test".toByteArray(Charsets.UTF_8)
}
我的问题出在iOS
部分。我不知道如何将字符串转换为ByteArray。有toCharArray()
函数,但没有toByteArray()
。另外,还有toByte()
函数。
actual fun receivedEASNotification(): ByteArray {
return "test".toByteArray() // There is no such a function for iOS.
}
答案 0 :(得分:0)
import Foundation
// An input string.
let name = "perls"
// Get the String.UTF8View.
let bytes = name.utf8
print(bytes)
// Get an array from the UTF8View.
// ... This is a byte array of character data.
var buffer = [UInt8](bytes)
// Change the first byte in the byte array.
// The byte array is mutable.
buffer[0] = buffer[0] + UInt8(1)
print(buffer)
// Get a string from the byte array.
if let result = String(bytes: buffer, encoding: NSASCIIStringEncoding) {
print(result)
}
输出:
perls
[113, 101, 114, 108, 115]
qerls