swiftui - 如何将默认值设置为范围当我使用 ForEach 方法时?
问题描述
我目前正在使用 SwiftUI 开发应用程序。
我想知道在使用方法时如何设置默认值count
as 。Range<Int>
ForEach
因为使用由异步方法创建的数组对象,所以当我使用ForEach
方法时,我必须设置一个默认值。
如果我只设置默认值0
,我会收到以下错误:
Cannot convert value of type 'Int' to expected argument type 'Range<Int>'
我怎么能设置一个值Range<Int>
呢?
以下是代码:
*我想设置0
为默认值
内容视图.swift
...
@EnvironmentObject var appState: AppState
ForEach(0..<appState.arrayInfos?.count ?? 0 ,id: \.self){ index in
VStack{
InfoRow(no: index,info:appState.arrayInfos![index] )
}
}
...
AppState.swift
class AppState: ObservableObject {
@Published var arrayInfos:[ArrayInfos]?
}
...
let task = session.dataTask(with: urlRequest) {
(data, response, error) in
DispatchQueue.main.async {
do{ self.arrayInfos = try JSONDecoder().decode([ArrayInfos].self, from: responseData)
}catch{
print("Error: did not decode")
return
}
}
}
task.resume()
...
Xcode:版本 12.0.1
解决方案
需要使用 的动态变体ForEach
,否则数据出现时不会更新
ForEach(appState.arrayInfos?.indices ?? 0..<0, id: \.self) { index in
VStack {
InfoRow(no: index, info: appState.arrayInfos![index])
}
}
推荐阅读
- r - 我如何避免使用系列图 R 预测地块中的漏洞
- git - 在 git 中查看文件的先前版本(压缩提交)
- python - scrapy无法登录
- cakephp - CakePHP Auth->identify() 返回 false
- typescript - 在不同的分支中约束并集 T
- ssms - Microsoft 是否删除了 SQL Server Management Studio 中结果视图的缩放
- scala - 如何从对象扩展的抽象类中获取类型参数
- c# - 将图像加载到 xaml
- angular - 您如何在您的 Angular2+ 项目中构建 http 调用?
- google-maps - React Google Map : 绑定在 GoogleMap 中的所有标记的 UL 以及单击每个 li 时对应的信息窗口