Xcode 13.3 RC 版本已经发布了,和以往一样,我第一时间下载安装并测试了项目,不仅发现编译速度下降了(见此),而且也发现 SwiftUI 项目多了一些 Warning。这个 Warning 便是:Non-constant range: argument must be an integer literal。
这个 Warning 的字面意思是「非常数范围:参数必须是整数字面量。」所以除非是常数,比如直接用「0..<4」这样的代码消除这个警告,但是大多数情况下,我们不可能去这样写,因为这部分 View 就是动态生成的。
那么如何正确消除这个 Warning,还是要回到原始文档去找答案:ForEach/init(_:content:)
The instance only reads the initial value of the provided data and doesn’t need to identify views across updates. To compute views on demand over a dynamic range, use ForEach/init(_:id:content:).
简单地说,这个方法只会读取提供数据的初始数,如果你不需要 View 在之后发生变化,那么可以用这个方法,不然推荐使用 ForEach/init(_:id:content:).
所以只要把代码改成下面这样就可以了:
ForEach(0..<features.count, id: \.self) { (index) in
FeatureView(text: features[index])
}
棒,谢谢分享。
成功解决,感谢