【问题标题】:KMM: Cast string to NSString get warning "This case can never succeed"KMM:将字符串转换为 NSString 会收到警告“这种情况永远不会成功”
【发布时间】:2023-02-16 18:58:50
【问题描述】:

在我的 KMM 项目中,我有一个方法可以在其中调用 Objective-C predicateWithFormat 方法。当我尝试将传递的字符串文本转换为 NSString 时,我收到警告“此转换永远不会成功”。

    override fun elementWithPredicateText(text: String): AppElement {
        val predicate = NSPredicate.predicateWithFormat("label CONTAINS %@", text as NSString)
        val query = app.descendantsMatchingType(XCUIElementTypeAny).matchingPredicate(predicate)
        return UIElementWrapper(query)
    }

这里的问题是,如果我不将此字符串转换为 NSString,则会出现构建错误,如下图所示。现在从 String 类型转换为 NSString,构建可能会成功,尽管它有这个恼人的警告,那么我该如何解决这个警告呢?

使用的 iOS 方法。

 @kotlin.commonizer.ObjCCallable public open external expect fun predicateWithFormat(predicateFormat: kotlin.String, vararg args: kotlin.Any?): platform.Foundation.NSPredicate { /* compiled code */ }

【问题讨论】:

    标签: objective-c kotlin xctest kotlin-multiplatform


    【解决方案1】:

    我相信当投射到 NSString 时收到的警告是 Android Studio 或 Kotlin 编译器错误。推荐将 Kotlin String 转换为 NSString see documentation on depreceted method 和 Kotlin documentation 的方法。

    你可以用@Suppress("CAST_NEVER_SUCCEEDS") 来压制它。

    【讨论】:

    • 是的,我也看到了这个页面,旧方法已被弃用,他们建议我们使用普通的 kotlin cast 从 String 创建 NSString。
    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 2019-06-21
    • 2023-03-16
    • 1970-01-01
    • 2011-12-05
    • 2012-01-06
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多