如何让我的TodayWidget在Swift中读出CoreData?

时间:2017-01-22 11:50:16

标签: swift core-data widget appdelegate

所以我正在创建这个应用程序,用户可以在其中将数据存储在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
}
}

请注意,这不是我的整个代码,而是一些共同创建获取功能的片段

0 个答案:

没有答案