【发布时间】:2022-01-24 05:32:20
【问题描述】:
我想为特定类型中所有可用尺寸的咖啡创建一个 Swift TableView。有了这个 JSON 树,你如何构造类来为特定类型的大小创建一个数组?
JSON 树的结构如下:
{
"_id": "60ba1ab72e35f2d9c786c610",
"types": [
{
"_id": "60ba1a062e35f2d9c786c56d",
"name": "Ristretto",
"sizes": [
"60ba18d13ca8c43196b5f606",
"60ba3368c45ecee5d77a016b"
],
"extras": [
"60ba197c2e35f2d9c786c525"
]
},
{
"_id": "60be1db3c45ecee5d77ad890",
"name": "Espresso",
"sizes": [
"60ba3368c45ecee5d77a016b",
"60ba33dbc45ecee5d77a01f8"
],
"extras": [
"60ba34a0c45ecee5d77a0263"
]
},
{
"_id": "60be1eabc45ecee5d77ad960",
"name": "Cappuccino",
"sizes": [
"60ba18d13ca8c43196b5f606",
"60ba3368c45ecee5d77a016b",
"60ba33dbc45ecee5d77a01f8"
],
"extras": [
"60ba197c2e35f2d9c786c525",
"60ba34a0c45ecee5d77a0263"
]
}
],
"sizes": [
{
"_id": "60ba18d13ca8c43196b5f606",
"name": "Large",
"__v": 0
},
{
"_id": "60ba3368c45ecee5d77a016b",
"name": "Venti"
},
{
"_id": "60ba33dbc45ecee5d77a01f8",
"name": "Tall"
}
],
"extras": [
{
"_id": "60ba197c2e35f2d9c786c525",
"name": "Select the amount of sugar",
"subselections": [
{
"_id": "60ba194dfdd5e192e14eaa75",
"name": "A lot"
},
{
"_id": "60ba195407e1dc8a4e33b5e5",
"name": "Normal"
}
]
},
{
"_id": "60ba34a0c45ecee5d77a0263",
"name": "Select type of milk",
"subselections": [
{
"_id": "611a1adeff35e4db9df19667",
"name": "Soy"
},
{
"_id": "60ba348d8c75424ac5ed259e",
"name": "Oat"
},
{
"_id": "60ba349a869d7a04642b41f4",
"name": "Cow"
}
]
}
]
}
我的课程:(我目前可以加载带有咖啡尺寸的 TableView,但不能加载特定类型的尺寸)
import Foundation
import UIKit
class Types: Codable {
let types: [CoffeeType]
init(types: [CoffeeType]) {
self.types = types
}
}
class Sizes: Codable {
let sizes: [CoffeeType]
init(sizes: [CoffeeType]) {
self.sizes = sizes
}
}
class CoffeeType: Codable {
let _id: String
let name: String
init(_id: String, name: String) {
self._id = _id
self.name = name
}
}
应用程序的结构如下: HomeViewController 是一个 TableView 类型。当您单击一个类型时,您将转换到 SelectSizeViewController,我已经通过 segue 为其分配了一个类型。在 SelectSizeViewController 上,我想显示特定尺寸的列表。
【问题讨论】:
-
你可以使用 tableview 部分对吗?如果你愿意,你可以在里面使用tableviews(这是一种hack)。根据我的理解,我要说的是,您可以使用部分来表示您再次拥有一系列大小的类型。在该单元格内填充一个子表视图,您可以在其中显示类型吗?
-
@Jok3r,子 TableView 或显示特定类型大小的单独 TableView。例如,对于 Cappuccino 类型,表格显示:“60ba18d13ca8c43196b5f606”、“60ba3368c45ecee5d77a016b”、“60ba33dbc45ecee5d77a01f8”。
-
我们需要在单个表格视图中显示两者吗?否则我们可以做的一件事是,当您单击一个类型单元格时,它将重定向到该单元格中带有新表格视图的新视图控制器可以显示尺寸。当您执行 segue 时,您也可以传递数据,如果您想在单个 tableview 中显示所有内容,那么您必须在单元格内使用子 tablview .. 根据类型数组计数,您也可以设置高度,单独的 tableview 会更好
-
@Jok3r,最好使用单独的 TableView。您将如何设置 CoffeeType 类以包含大小数组?