无法转换类型“Range<Int>?”的值到预期的参数类型'Range<String.Index>?

Posted

技术标签:

【中文标题】无法转换类型“Range<Int>?”的值到预期的参数类型\'Range<String.Index>?【英文标题】:Cannot convert value of type 'Range<Int>?' to expected argument type 'Range<String.Index>?无法转换类型“Range<Int>?”的值到预期的参数类型'Range<String.Index>? 【发布时间】:2021-07-19 19:11:44 【问题描述】:

我在尝试传递到 string.range(of:, options:, range:, locale) 时遇到错误

具体来说,对于我尝试传入的范围修饰符 Range(remainingRange)remainingRange = NSMakeRange(0, string.count)

但是,错误似乎表明它的类型不匹配,没有String.Index:'Range&lt;Int&gt;?' to expected argument type 'Range&lt;String.Index&gt;?'

我不确定为什么这会是一个问题,因为只是通过目标 c 中的范围就可以了。有什么想法吗?

【问题讨论】:

【参考方案1】:

Swift 字符串不能被Int 索引下标,因为字符的长度是灵活的。

替换

NSMakeRange(0, string.count)

NSRange(string.startIndex..., in: string)

或者——更好——只是省略 rangelocale 参数。

【讨论】:

以上是关于无法转换类型“Range<Int>?”的值到预期的参数类型'Range<String.Index>?的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型“[Surah]”的值转换为预期的参数类型“Range<Int>”

SwiftUI 核心数据错误 - “无法将 'FetchedResults<GCItem>' 类型的值转换为预期的参数类型 'Range<Int>'”

迅速将 Range<Int> 转换为 [Int]

参数类型 'Range<Int>' 不符合预期的类型 'Sequence' Swift3

Swift 中的切片是啥?

SWIG 无法正确转换 typedef 类型