<Int> 使用 ForEach 方法时如何将默认值设置为 Range?



我目前正在使用SwiftUI开发一个应用程序。

我想知道当我使用ForEach方法时,如何将count的默认值设置为Range<Int>

由于使用了一个由异步方法创建的数组对象,当我使用ForEach方法时,我必须设置一个默认值。

如果我只设置默认值0,我会得到以下错误:

Cannot convert value of type 'Int' to expected argument type 'Range<Int>'

那么,我如何将值设置为Range<Int>呢?


以下是代码:

*我想将0设置为默认值

ContentView.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])
}
}

相关内容

  • 没有找到相关文章

最新更新