将范围 <Int> 转换为 swift 3
Convert Range<Int> to swift 3
我正在尝试将此代码块转换为在 swift 3 中工作。
let grainSize = CGFloat(0.01)
let min = CGFloat(-3)
let max = CGFloat(3)
let range = Range<Int>(start: Int(min/grainSize), end: Int(max/grainSize))
我面临的问题是 Range - 我试图查看苹果文档,但我什至不知道我在寻找什么。它报告的问题是它说
Cannot convert value of type 'Int' to expected argument type 'NSRange' (aka '_NSRange')
任何人都可以帮助我了解这里发生的事情以及我可以阅读的 where/what 文档来理解这一点吗?
在 Swift 3 中试试这个,它会起作用。 Range
中没有 init(start: end:)
方法。这就是这个错误的原因。
let grainSize = CGFloat(0.01)
let min = CGFloat(-3)
let max = CGFloat(3)
let range = Range<Int>(uncheckedBounds: (lower: Int(min/grainSize), upper: Int(max/grainSize)))
这将创建以下范围:
-300..<300
您可以使用更简单的语法获得更强大的 Countable
范围:
let range = (Int(min/grainSize)..<Int(max/grainSize))
以returnsCountableRange
, not just Range
, so you can access to RandomAccessCollection
方法为例。
如果你只想获得 Range
值,你可以这样转换它:
let range = Range(Int(min/grainSize)..<Int(max/grainSize))
还有 helpful post 关于 swift 中的范围 3.
我正在尝试将此代码块转换为在 swift 3 中工作。
let grainSize = CGFloat(0.01)
let min = CGFloat(-3)
let max = CGFloat(3)
let range = Range<Int>(start: Int(min/grainSize), end: Int(max/grainSize))
我面临的问题是 Range - 我试图查看苹果文档,但我什至不知道我在寻找什么。它报告的问题是它说
Cannot convert value of type 'Int' to expected argument type 'NSRange' (aka '_NSRange')
任何人都可以帮助我了解这里发生的事情以及我可以阅读的 where/what 文档来理解这一点吗?
在 Swift 3 中试试这个,它会起作用。 Range
中没有 init(start: end:)
方法。这就是这个错误的原因。
let grainSize = CGFloat(0.01)
let min = CGFloat(-3)
let max = CGFloat(3)
let range = Range<Int>(uncheckedBounds: (lower: Int(min/grainSize), upper: Int(max/grainSize)))
这将创建以下范围:
-300..<300
您可以使用更简单的语法获得更强大的 Countable
范围:
let range = (Int(min/grainSize)..<Int(max/grainSize))
以returnsCountableRange
, not just Range
, so you can access to RandomAccessCollection
方法为例。
如果你只想获得 Range
值,你可以这样转换它:
let range = Range(Int(min/grainSize)..<Int(max/grainSize))
还有 helpful post 关于 swift 中的范围 3.