Swiftui 如何将默认值设置为范围<;Int>;当我使用ForEach方法时?
我目前正在使用SwiftUI开发一个应用程序 我想知道当我使用Swiftui 如何将默认值设置为范围<;Int>;当我使用ForEach方法时?,swiftui,Swiftui,我目前正在使用SwiftUI开发一个应用程序 我想知道当我使用ForEach方法时,如何将count的默认值设置为Range 由于使用异步方法创建的数组对象,因此当我使用ForEach方法时,我必须设置一个默认值 如果我仅将默认值设置为0,则会出现以下错误: Cannot convert value of type 'Int' to expected argument type 'Range<Int>' AppState.swift class AppState: Observab
ForEach
方法时,如何将count
的默认值设置为Range
由于使用异步方法创建的数组对象,因此当我使用ForEach
方法时,我必须设置一个默认值
如果我仅将默认值设置为0
,则会出现以下错误:
Cannot convert value of type 'Int' to expected argument type 'Range<Int>'
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:Version 12.0.1您需要使用ForEach的动态变量,否则当数据出现时它将不会被更新
ForEach(appState.arrayInfos?.indices ?? 0..<0, id: \.self) { index in
VStack {
InfoRow(no: index, info: appState.arrayInfos![index])
}
}
ForEach(appState.arrayInfos?.index??0..感谢您的回答,我试图按照您的代码执行此操作。但随后我遇到此错误Thread 1:致命错误:在这里appState.arrayInfos![index]中展开可选值时意外发现为零
。闭合范围包括0索引,我的故障-请参阅更新为空范围作为修复(现在使用Xcode 12.1进行测试)
ForEach(appState.arrayInfos?.indices ?? 0..<0, id: \.self) { index in
VStack {
InfoRow(no: index, info: appState.arrayInfos![index])
}
}