Я новый разработчик, и у меня есть финансовое приложение с представлением коллекции категорий.
Когда пользователь нажимает на категорию, следующая страница должна заполнять представление коллекции подкатегорий для основной категории .
Вот моя текущая модель данных:
import UIKit
struct Category {
var name: String
var color: UIColor
var amountBudgeted: Double
var subCategories: [SubCategory]
}
struct SubCategory {
var name: String
var amountBudgeted: Double
}
let categories = [
Category(
name: "Income",
color: UIColor(rgb: Constants.green),
amountBudgeted: 0.00,
subCategories: [
SubCategory(name: "Paycheck", amountBudgeted: 0.00),
SubCategory(name: "Bonus", amountBudgeted: 0.00),
SubCategory(name: "Dividend", amountBudgeted: 0.00),
SubCategory(name: "Rental Income", amountBudgeted: 0.00),
]),
Category(
name: "Housing",
color: UIColor(rgb: Constants.grey),
amountBudgeted: 0.00,
subCategories: [
SubCategory(name: "Mortgage", amountBudgeted: 0.00),
SubCategory(name: "Property Tax", amountBudgeted: 0.00),
SubCategory(name: "HOA Fees", amountBudgeted: 0.00),
SubCategory(name: "Household Repairs", amountBudgeted: 0.00),
]),
Category(
name: "Transportation",
color: UIColor(rgb: Constants.red),
amountBudgeted: 0.00,
subCategories: [
SubCategory(name: "Car Payment", amountBudgeted: 0.00),
SubCategory(name: "Gas", amountBudgeted: 0.00),
SubCategory(name: "Car Repairs", amountBudgeted: 0.00),
SubCategory(name: "Registration", amountBudgeted: 0.00),
]),
Category(
name: "Food",
color: UIColor(rgb: Constants.yellow),
amountBudgeted: 0.00,
subCategories: [
SubCategory(name: "Groceries", amountBudgeted: 0.00),
SubCategory(name: "Restaurants", amountBudgeted: 0.00),
]),
]
Я могу легко вызвать свойства основной категории в cellForItemAt как cell.nameLabel.text = categories[indexPath.item].name
, но я не могу заставить работать представление подкатегории.
Я пытаюсь cell.nameLabel.text = categories[indexPath.item].subCategories[indexPath.item].name
, но это не работает должным образом.
Мне также нужно выяснить, как связать данные между контроллерами представления, но это может потребоваться отдельная вопрос.
Нужно ли мне переосмыслить мою модель данных? Или мне нужно настроить метод cellForItemAt по-другому?
Спасибо.