代码之家  ›  专栏  ›  技术社区  ›  Please Help Me

Kotlin多平台Access Swift标准库

  •  0
  • Please Help Me  · 技术社区  · 1 年前

    我有一个 actual 我想实现swift的类 Hashable 但我找不到swift的进口货 Hashable Kotlin内部。

    如果我想实施say UIView 我可以很容易地导入它,并按如下方式使用它:

    import platform.UIKit.UIView
    
    actual final class Example actual constructor() : UIView(.... Stuff here)  {
        
    }
    

    但是呢 Hashable ?以及swift标准库中的其他内容?我在里面找不到它们 platfrom ,我也看了里面 platfrom.objc ,但在任何地方都找不到标准lib。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Phil Dukhov    1 年前

    Hashable 是在Swift中定义的,KMP目前不支持Swift互操作。在Kotlin中,您只能使用ObjC提供的代码。

    但是所有 NSObject 子类是 Hashable 默认情况下,因此从KMP创建的任何对象也将是可散列的。

    请注意,在的情况下 NSObject ,散列是基于对象指针的,而不是基于对象属性的,正如您在Swift中可能习惯的那样。您可以从Swift中覆盖此逻辑:

    extension KObject {
        public override var hash: Int {
            // your logic
        }
    }
    

    或从Kotlin实现:

    override fun hash(): NSUInteger {
        // your logic
    }