我想了解为什么使用结构会导致此问题,而类则不会。我在将元素附加到数组并让观察者加载表时遇到了问题。以下是代码:
Order.swift - 订购的商品
struct Order {
var menuItems: [MenuItem]
init(menuItems: [MenuItem] = []) {
self.menuItems = menuItems
}
}
Run Code Online (Sandbox Code Playgroud)
MenuController.swift - 包含订单和共享实例
struct MenuController {
static var shared: MenuController = MenuController()
static let orderNotification = Notification.Name("MenuController.orderUpdated")
var order = Order() {
didSet {
NotificationCenter.default.post(name: MenuController.orderNotification,
object: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
MenuItemViewController.swift - 订购屏幕
@IBAction func orderButtonTapped(_ sender: UIButton) {
MenuController.shared.order.menuItems.append(menuItem)
}
Run Code Online (Sandbox Code Playgroud)
OrderTableViewController.swift - 商品订购屏幕
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(tableView,
selector: #selector(UITableView.reloadData),
name: MenuController.orderNotification, object: nil)
}
... …Run Code Online (Sandbox Code Playgroud)