如何指定范围' in:' Swift 3方法范围的参数(of:options:in)

时间:2017-07-25 08:12:01

标签: swift3

尝试使用这样的方法:

let myrange = 0...3
let rang = data.range(of: data, options: NSData.SearchOptions(), in: myrange)

收到以下错误。

cannot convert value of type 'CountableClosedRange<Int>' to expected argument type 'Range<Data.Index>?'

此方法的文档: https://developer.apple.com/documentation/foundation/nsdata/1410391-range

指定参数的类型:as NSRange。 但是创建一个像这样的NSRange:

let myNSRange = NSRange(location: 3, length: 2)

导致此错误:

cannot convert value of type 'NSRange' (aka '_NSRange') to expected argument type 'Range<Data.Index>?'

如何创建可在此处使用的&#39; Range<Data.Index>&#39;

感谢。

1 个答案:

答案 0 :(得分:2)

要从字面上创建Range<Data.Index>,您必须使用CountableRange运算符并注释类型:

let data = Data(0..<100)
let subData = Data(0..<2)

let myrange : Range<Data.Index> = 0..<4
let rang = data.range(of: subData, in: myrange) // Range(0..<2)

基金会NSRange和Swift Range是完全不同的两件事。

顺便说一下:options参数的默认值为 no options ,可以省略。