Доступ к значениям массива, который также является структурой - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь получить доступ к свойствам массива моей структуры и добавить их к новому пользователю.Я делаю это, создавая свойство массива для структуры со своими собственными свойствами.

Я получаю 1 элемент в отладчике с 0 значениями.Моё свойство basket равно nil, но значения свойств в корзине - нет.

Не думаю, что я правильно создаю пользователя в контроллере модели, инициализируя массив baskets.В идеале массив и его свойства добавляются при создании пользователя.

Вот моя модель

struct User: Codable, Equatable {
    var basket: [Basket]
}

struct Basket: Codable, Equatable {
    var user: String
    var color: String
    var style: String
}

Вот мой контроллер модели

class UserController {
    static var shared = UserController()

    let baskets = [Basket]()
    var users: [User] = []

    func createUser(with user: String, color: String, style: String) {
        let user = User(basket: baskets)
        users.append(user)
    }

Вот мой View Controller

var user: User!
var users: [User] = []
let userController = UserController.shared


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return users.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! UserCell

        cell.userLabel.text = user.basket[0].user
        cell.titleLabel.text = user.basket[0].color
        cell.descriptionLabel.text = user.basket[0].style

        return cell
    }

Наконец, мой детальный контроллер, в котором я создаю пользователя

var user: User!
var userController = UserController.shared 

@objc private func createUserTapped() {
    guard let user = userTextField.text,
        let color = colorTextField.text,
        let style = styleTextField.text else { return }

    userController.createUser(with: user, color: color, style: style)
    self.navigationController?.popViewController(animated: true)
}
...