不填充tableview与结构数组

我需要用一个结构数组填充我的tableView。 该结构的第一个属性是名称。 这是我试过的…

var menuArray:[Restaurant] = [Restaurant]() override func viewDidLoad() { super.viewDidLoad() let shake = Item(name: "Shake", carbs: 20) let fries = Item(name: "Fries", carbs: 30) let beverages = Category(name: "Beverages", items: [shake]) let chips_fries = Category(name: "Chips & Fries", items: [fries]) let desserts = Category(name: "Desserts", items: []) let other = Category(name: "Other Menu Items", items: []) let sandwiches_burgers = Category(name: "Sandwiches & Burgers", items: []) let sides = Category(name: "Sides", items: []) a_w = Restaurant(name: "A&W", categories: [beverages, chips_fries, desserts, other, sandwiches_burgers, sides]) let menuArray = [a_w] } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let currentCell = tableView.dequeueReusableCell(withIdentifier: "cell") let currentRestaurant = menuArray[indexPath.row] currentCell?.textLabel!.text = currentRestaurant.name return currentCell! } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return menuArray.count } 

为什么不填充我的tableView

这是我的class也…

 import Foundation struct Item { let name: String let carbs: Int } struct Category { let name: String let items: [Item] } struct Restaurant { let name: String let categories: [Category] } 

在这一行

 let menuArray = [a_w] 

您正在创build一个局部variablesmenuArray ,它与具有相同名称的属性(代表数据源数组)不同。

省略let

 menuArray = [a_w] 

PS:请使用比a_w更多的描述性variables名称。

从你的代码看起来你有两个同名的variables。

  1. 一个是在课堂上宣布的
  2. 另一个是在viewDidLoad方法中声明的

    让menuArray = [a_w]

只要从viewDidLoad中声明的这个删除。

它会看起来像这样

 menuArray = [a_w] 

你的menuArray只包含一个项目,所以只有一行应该显示餐厅名称。 尝试检查你是否设置了tableView委托和数据源属性tableView.dataSource = self tableView.delegate = self

此外,具有默认标签的原型单元应该具有名称titleLabel尝试访问titleLabel而不是textLabel