gpt4 book ai didi

swift - 如何从 Kotlin 移动平台访问 Array 到 iOS 或 Android?

转载 作者:行者123 更新时间:2023-12-01 23:31:06 24 4
gpt4 key购买 nike

我正在尝试在 KMM 应用程序中创建冒泡排序。现在 KMM func 从 native 端获取参数并将其与应用程序的 KMM 端进行通信,并且应该将排序后的数组返回给 native 端。现在,我心里几乎没有疑虑了。

  1. 我是否正确地在 swift 中声明了 kotlinArray?如果我尝试将它指定为普通的 swift 数组,它就无法转换为 Kotlin 数组并给我转换错误。所以这是我想到的。那么这是从 swift 与 KotlinArray 通信的正确方式吗?
  2. fun bubbleSort 在我尝试在 native 项目上运行时效果很好。但是当我尝试运行 KMM 项目时,它只是给我一个垃圾值。那么任何人都可以帮助我了解如何实现这一目标吗?

以下是我的源代码。

SourceCode for ContentView.swift:

func greet() -> String {

let array = KotlinIntArray(size: 5)
array.set(index: 0, value: 2)
array.set(index: 1, value: 15)
array.set(index: 2, value: 1)
array.set(index: 3, value: 8)
array.set(index: 4, value: 4)
let sortedArray = Greeting().bubbleSort(arr:array)

print("Entered Array :\(array)"). //output: Entered Array :kotlin.IntArray@187bd58

print("Sorted Array :\(sortedArray)") //Output: Sorted Array :kotlin.IntArray@187bd58

return Greeting().greeting()

}
SourceCode for Greetings.kt:
package com.example.kmm_perofomance.shared


class Greeting {
fun greeting(): String {
return "Hello, ${Platform().platform}!"
}

fun bubbleSort(arr:IntArray):IntArray{
for (i in 1..arr.count()) {
for (j in 1..arr.count() - i) {
if( arr[j] < arr[j-1]) {
var temp = arr[j-1]
arr[j-1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
}

输出截图: Output screenshot:

如有任何帮助,我们将不胜感激。

最佳答案

“垃圾值”是该类型的默认 toString,或者可能是数组的包装类型。在任何情况下,它所说的是“kotlin.IntArray”,它是类型,“@_____”,它是 id 或指针值(不确定)。无论如何,它显然不是值列表。要打印它,您应该编写一个函数来为您打印它。

KMM 来回转换 List 和 Swift 数组。 Kotlin 数组没有被转换,并且是 Swift 可以与之交互的简单对象类型,所以你上面的例子看起来不错。只是你没有正确打印它。

不过,我不知道您的排序代码是否正确。

我要指出的是,您正在修改传入并返回的数组,这将导致您的输出不正确。在您打印 arraysortedArray 时,它们将是相同的值。它们都会被排序。

关于swift - 如何从 Kotlin 移动平台访问 Array 到 iOS 或 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66243210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com