所以我正在创建这个应用程序,用户可以在其中将数据存储在CoreData中并在表格视图中查看
它的工作原理应该如此,但现在我希望在表视图中看到数据,该视图位于今天的小部件中。
我已尝试通过尝试获取“常规方式”来执行此操作,但窗口小部件无法通过AppDelegate文件读取它。
我得到的错误说明如下:“'shared'不可用:在适当情况下使用基于视图控制器的解决方案。”
我也得到错误:“使用未声明的类型'AppDelegate'”
有人有能力帮助我吗? 谢谢,
编辑:
这是我用来获取ViewController中数据的代码:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSManagedObject>(entityName: "ToDoList")
do {
toDoItems = try managedContext.fetch(request)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
toDoTableView.tableFooterView = UIView()
self.toDoTableView.reloadData()
toDoTableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let cell = UITableViewCell()
cell.contentView.backgroundColor = UIColor.clear
cell.backgroundColor = UIColor.clear
toDoTableView.backgroundColor = UIColor.clear
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return toDoItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let activities = toDoItems[indexPath.row]
let cell = toDoTableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text =
activities.value(forKeyPath: "todoitems") as? String
return cell
}
}
请注意,这不是我的整个代码,而是一些共同创建获取功能的片段