列表以在 swiftUI 中显示来自服务器的数据
List to display data from server in swiftUI
我正在从服务器获取数据,我需要像在本网站上显示的那样显示它
来自服务器的数据是
"OptionsListByItemId": [
{
"Choices": [
{
"ChoiceId": 1284226,
"ChoiceName": "Hot",
},
{
"ChoiceId": 1284227,
"ChoiceName": "Cool",
}
],
"OptionId": 187472,
"OptionName": "Temperature"
},
{
"Choices": [
{
"ChoiceId": 1284223,
"ChoiceName": "61%",
},
{
"ChoiceId": 1284224,
"ChoiceName": "70%",
}
],
"OptionId": 187473,
"OptionName": "Humidity"
]
}
我的模型是这样的
struct OptionsandChoices : Decodable , Identifiable{
var id: String{OptionName}
var OptionName: String!
var OptionId: Int
var Choices : [ChoiseList]
}
struct OptionsandChoiceList: Decodable{
var OptionsListByItemId:[OptionsandChoices]
}
struct ChoiseList: Decodable {
var ChoiceName: String!
var ChoiceId: Int
}
视图模型是
class ItemChoiceViewModel : ObservableObject{
@Published var OpnChoice: OptionsandChoiceList = OptionsandChoiceList(OptionsListByItemId: [])
// fetching data from server
}
我的 swiftUI 视图像
struct ItemView: View {
var OpnChoice = OptionsandChoiceList(OptionsListByItemId: [])
@ObservedObject var choicevwModel = ChoiceViewModel()
struct Optionspage: View {
var body: some View {
List(choicevwModel.OpnChoice.OptionsListByItemId) {opn in
Text(opn.OptionName)
}
}
我无法在列表中使用 ChoiceName
我怎样才能在 OptionName 下面的每一行中获得 choiceName 就像我给的 link
列表应该像
那样显示
Temperature
Hot
Cold
Humidity
61%
70%
目前我排成两排
Temperature
Humidity
您要查找的属性位于Choices
。要获得它的价值,请写以下内容:
opn.Choices[yourIndex].OptionName
此外,如果您想使用 @ObservedObject
,请创建 OptionsandChoiceList
class 而不是结构,并使其符合 ObservableObject
协议。最后,在此处声明 @Published
属性。
final class OptionsandChoiceList: ObservableObject, Decodable {
@Published var OptionsListByItemId: OptionsandChoices = []
}
我正在从服务器获取数据,我需要像在本网站上显示的那样显示它
来自服务器的数据是
"OptionsListByItemId": [
{
"Choices": [
{
"ChoiceId": 1284226,
"ChoiceName": "Hot",
},
{
"ChoiceId": 1284227,
"ChoiceName": "Cool",
}
],
"OptionId": 187472,
"OptionName": "Temperature"
},
{
"Choices": [
{
"ChoiceId": 1284223,
"ChoiceName": "61%",
},
{
"ChoiceId": 1284224,
"ChoiceName": "70%",
}
],
"OptionId": 187473,
"OptionName": "Humidity"
]
}
我的模型是这样的
struct OptionsandChoices : Decodable , Identifiable{
var id: String{OptionName}
var OptionName: String!
var OptionId: Int
var Choices : [ChoiseList]
}
struct OptionsandChoiceList: Decodable{
var OptionsListByItemId:[OptionsandChoices]
}
struct ChoiseList: Decodable {
var ChoiceName: String!
var ChoiceId: Int
}
视图模型是
class ItemChoiceViewModel : ObservableObject{
@Published var OpnChoice: OptionsandChoiceList = OptionsandChoiceList(OptionsListByItemId: [])
// fetching data from server
}
我的 swiftUI 视图像
struct ItemView: View {
var OpnChoice = OptionsandChoiceList(OptionsListByItemId: [])
@ObservedObject var choicevwModel = ChoiceViewModel()
struct Optionspage: View {
var body: some View {
List(choicevwModel.OpnChoice.OptionsListByItemId) {opn in
Text(opn.OptionName)
}
}
我无法在列表中使用 ChoiceName
我怎样才能在 OptionName 下面的每一行中获得 choiceName 就像我给的 link
列表应该像
那样显示 Temperature
Hot
Cold
Humidity
61%
70%
目前我排成两排
Temperature
Humidity
您要查找的属性位于Choices
。要获得它的价值,请写以下内容:
opn.Choices[yourIndex].OptionName
此外,如果您想使用 @ObservedObject
,请创建 OptionsandChoiceList
class 而不是结构,并使其符合 ObservableObject
协议。最后,在此处声明 @Published
属性。
final class OptionsandChoiceList: ObservableObject, Decodable {
@Published var OptionsListByItemId: OptionsandChoices = []
}