Kotlin Native中直接调用NSRange构造器报错,求解决方案
解决Kotlin Native中无法直接调用NSRange构造器的问题
在Kotlin Native的Objective-C互操作体系中,NSRange这类Objective-C结构体不允许直接通过构造器实例化,必须使用自动生成的工厂函数NSRangeMake来创建实例。
修改后的代码如下:
actual class PlatformRegex actual constructor() { actual fun findAll(pattern: String, input: String): List<String> { val regex = NSRegularExpression(pattern = pattern, options = 2, error = null) // 使用NSRangeMake创建NSRange实例,替代直接调用构造器 val range = NSRangeMake(location = 0u, length = input.length.toULong()) val matches = regex.matchesInString(string = input, options = 2, range = range) return matches.map { match -> match.toString() } } }
关键修改说明:
- 移除原代码中直接实例化
NSRange的逻辑,改用NSRangeMake函数创建范围对象,这是Kotlin Native处理Objective-C结构体的标准方式。 - 无需再调用
readValue(),NSRangeMake返回的就是可直接使用的NSRange实例。
内容的提问来源于stack exchange,提问作者Pavlo Kravchenko
相关产品推荐
相关产品推荐

