WWDC 2018 — Swift 4.2和“随机”更改
在WWDC 2018中,Swift 4.2引入了新方法来生成和访问集合中的随机值。 通常,应用程序开发人员会在构建游戏或创建测试数据时执行此操作。 让我们看一下访问随机项目的旧方法和新方法。
随机访问和旧版API
在一开始,Swift依靠旧的系统级C库生成随机数。 在Apple设备上,这是通过Darwin函数arc4random_uniform
。 尽管它确实可以满足您的要求,但是除了UInt32
之外,它还需要对类型进行大量工作。 例如,如果您需要构建一个浮点数,则需要:
let minimum = -7.9
let maximum = 12.8
let doubleValue = (Double(arc4random_uniform(UInt32.max)) / Double(UInt32.max)) * (maximum - minimum) + minimum
这导致一些开发人员构建软件包来简化此过程。
RandomKit和简化随机生成
RandomKit是一个库,在简化该库方面做得很好。 每个简单类型都有一个静态函数,用于根据提供的生成器的类型生成值:
let value = Int.random(using: &Xoroshiro.default)
生成器实现RandomGenerator
协议,该协议提供生成值所需的实现。
RandomKit还提供以下方法:
- 从数组中选择随机值
- 改组数组
- 生成其他类型,例如日期,(NS / UI)颜色,CGPoint等
Swift 4.2和WWDC 2018
提案SE-0202似乎可以解决许多不一致问题,这些不一致问题是由于跨操作系统(Linux与macOS)的随机生成和访问以及简化API所引起的。 它似乎也正在采取类似于RandomKit的方法。 例如,要生成某个范围内的随机Double,所需要做的就是:
Double.random(in: -7.9...12.8)
无需进行更多的转换或计算。
像RandomKit一样,可以将RandomNumberGenerator作为自变量提供,以自定义数字生成方式。 与RandomKit一样,可以使用Array.randomElement
选择随机元素。
结论
似乎已经实现了随机生成和访问所需的大多数改进。 像RandomKit这样的更复杂的库仍然有空间,希望它们将来实现这些新的API。 将来,最好使用新的API,并避免在应用程序或测试中需要使用旧版API生成随机数。
- 以编程方式在Swift中设置tabBarItem标题
- 使用UIVisualEffectView创build一个模糊视图,在模拟器上正确,但不是在iPhone和iPad上
- Xcode Bots:使用Swift Package Manager构建项目
- 如何:创建一个UIPageViewController
- 如何在Swift中测试抛出代码
- Swift Enum kullanarak daha组织listeleroluşturmak
- 如何在iOS中生成QR码
- iOS Swift:UIPageViewController – 以编程方式翻页
- iOS Swift,使用标签更新tableview CellForRow之外的UITableView自定义单元格标签