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

时间:2021-07-19 19:11:44

标签: ios swift objective-c

尝试传入 string.range(of:, options:, range:, locale) 时出错

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

但是,该错误似乎表明它属于不匹配的类型,其中没有 String.Index: 'Range<Int>?' to expected argument type 'Range<String.Index>?'

我不知道为什么这会成为一个问题,因为在目标 c 中传递范围是有效的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

替换

NSMakeRange(0, string.count)

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

或者 - 更好 - 只需省略 rangelocale 参数。