Как передать байты из Swift (iOS) в общий модуль Kotlin?IOS

Программируем под IOS
Ответить
Anonymous
 Как передать байты из Swift (iOS) в общий модуль Kotlin?

Сообщение Anonymous »

Чтобы поделиться реализацией протокола между приложением для Android и iOS, я экспериментирую с Kotlin Multiplatform. Я создал базовый мультиплатформенный проект, как описано здесь.

Он определяет общий код в общем модуле...

Код: Выделить всё

fun createApplicationScreenMessage() : String {
return "Kotlin Rocks on ${platformName()}"
}
... который можно использовать в проекте iOS CommonKt.createApplicationScreenMessage()

Теперь я хотел бы выполнять операции ввода-вывода в общем модуле. Для этого я нашел Kotlinx-io и могу использовать его внутри общего модуля.

Но как мне правильно спроектировать API между кодом Kotlin и кодом Swift, чтобы я мог передать Эквиваленты InputStream/ByteArray/ByteReadPacket из Swift в модуль kotlin?

например. что-то подобное с типами kotlinx-io, такими как ByteReadPacket:

Общий модуль Kotlin:

Код: Выделить всё

class ProtocolReader{
public fun parse(packet: ByteArray): ParsedMessage {
//parse data
}
}
Приложение Swift для iOS

Код: Выделить всё

var byteArray = [UInt8](characteristicData)
let reader = ProtocolReader()
reader.parse(byteArray)
Этот пример не работает, поскольку Swift byteArray не совместим с KotlinByteArray.

Как мне этого добиться? Нужно ли мне определять конечные точки API для каждой платформы, например. в данном случае в ios-модуле мультиплатформенного проекта Kotlin? или существуют вспомогательные методы для создания типов данных kotlinx-io из типов данных ios?

Подробнее здесь: https://stackoverflow.com/questions/555 ... mon-module
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»