我试图访问结构数组的属性并将其附加到新用户。我通过为具有其自身属性的结构创建数组属性来做到这一点。
我在调试器中得到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)
}
这是我的视图控制器
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)
}