显示来自 Observable Object SwiftUI 的列表
Posted
技术标签:
【中文标题】显示来自 Observable Object SwiftUI 的列表【英文标题】:Display a list from Observable Object SwiftUI 【发布时间】:2020-03-17 15:51:47 【问题描述】:我正在尝试解码一些 JSON 并将其打印到列表中,目前收到此错误消息,
ForEach, Int, Text> 计数 (626) != 其初始计数 (0)。 ForEach(_:content:)
只能用于常量数据。而是将数据符合Identifiable
或使用ForEach(_:id:content:)
并提供明确的id
!
我可以通过访问 result[0] 打印特定票证 但我无法将所有结果返回到视图。
这是我的列表视图
struct WOListView: View
@EnvironmentObject var ticketData:ControlCenter
var body: some View
VStack
Text(String(self.ticketData.jsonData?.result[0].ticketID?.ticketID ?? 0))
List
ForEach(0 ..< (self.ticketData.jsonData?.result.count ?? 0))
Text(String(self.ticketData.jsonData?.result[$0].ticketID?.ticketID ?? 0))
struct WOListView_Previews: PreviewProvider
static var previews: some View
WOListView().environmentObject(ControlCenter())
WorkOrderResults.swift
struct WorkOrderResults: Codable
var result:[Result]
enum CodingKeys:String, CodingKey
case result = "Result"
struct Result:Codable
var ticketID:TicketID?
var summary:Summary?
var status:Status?
var catagory:Catagory?
enum CodingKeys:String, CodingKey
case ticketID = "1"
case summary = "22"
case status = "96"
case catagory = "164"
struct TicketID:Codable
var ticketID:Int?
enum CodingKeys: String, CodingKey
case ticketID = "Value"
【问题讨论】:
【参考方案1】:在这里找到了我的问题的答案! view-is-not-rerendered-in-nested-foreach-loop!
将 WOListView 更改为如下所示...
var body: some View
VStack
Text(String(self.ticketData.jsonData?.result[0].ticketID?.ticketID ?? 0))
ForEach(0 ..< (self.ticketData.jsonData?.result.count ?? 0), id: \.self)
Text(String(self.ticketData.jsonData?.result[$0].ticketID?.ticketID ?? 0))
【讨论】:
以上是关于显示来自 Observable Object SwiftUI 的列表的主要内容,如果未能解决你的问题,请参考以下文章
IOS RxSwift 从 Observable 数组创建 Observable 数组
来自数组的 Observable 在 TypeScript 中不起作用
来自 URL 的 JSON 数据在 Html 网页中显示 [Object Object]
从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 'from' 的参数”