我放了一个Table View Controller并嵌入IB上的导航控制器。之后,我使用以下代码创建一个WalletsTableViewController类:
class WalletsTableViewController: UITableViewController {
private var wallets = [Wallet]()
override func viewDidLoad() {
super.viewDidLoad()
fetchWallets()
}
private func fetchWallets(){
let managedObjectContext = AppDelegate.managedContext
let fetchRequest: NSFetchRequest<Wallet> = Wallet.fetchRequest()
do {
wallets = try managedObjectContext.fetch(fetchRequest)
} catch {
print(error.localizedDescription)
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection: Int) -> Int {
return wallets.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "WalletCell", for: indexPath)
let wallet = wallets[indexPath.row]
cell.textLabel?.text = wallet.name
return cell
}
}
我实现了一个持久的应用程序,这就是为什么我有fetchWallets()方法并且它运行良好。我可以将数据打印到控制台,但tableView不想显示我的元素。此外,未调用实现的tableView()方法。 我该如何解决这个问题?
编辑: tableView.reloadData()没有帮助
答案 0 :(得分:0)
正如上面评论中所述,请尝试以下方法:
private func fetchWallets(){
let managedObjectContext = AppDelegate.managedContext
let fetchRequest: NSFetchRequest<Wallet> = Wallet.fetchRequest()
do {
wallets = try managedObjectContext.fetch(fetchRequest)
self.tableView.reloadData()
} catch {
print(error.localizedDescription)
}
}
答案 1 :(得分:0)
你需要在主线程中重新加载表视图使用下面的代码
private func fetchWallets(){
let managedObjectContext = AppDelegate.managedContext
let fetchRequest: NSFetchRequest<Wallet> = Wallet.fetchRequest()
do {
wallets = try managedObjectContext.fetch(fetchRequest)
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch {
print(error.localizedDescription)
}
}
希望这会对你有所帮助
答案 2 :(得分:0)
我的不好......我没有删除自动实现的功能。这解决了我的问题。