在多个控制器之间使用核心数据进行数据管理



我对工作方式有问题。我一直在想如何在某些情况下管理一些数据。示例:我使用核心数据,并在数组中的第一个View Controller中用NSFetchRequest初始化它。

[Trip]() -> (Trip: beginDate:Date, endDate:Date, isBookmark:Bool, etc)

我有一个Tableview,我只想让用户看到有isBookmark: false的行程,我有另一个View Controller,我只让isBookmark: true看到。

我现在遇到的问题:

  • 用户创建新行程的那一刻,默认为当前已添加书签的行程。在我在View Controllers之间使用委托函数之前,我无法从另一个视图控制器访问所有Trip对象,这已经不可能了,因为我添加了TabBarController
  • 当用户想要添加新行程时,我正在创建一个新的Trip(context: context)TabBarController现在的问题是,它的核心数据上下文已经在我的TableView中显示了一个null元素,即使我还没有调用save() context
  • 我可能会让书签创建一个新的核心数据实体,比如"Trips with 2 atributes (notSelectedTrips, selectedTrip)",并在这两者之间移动Trip本身。这是个好主意吗?或者我可以换一种方式吗

所以是的,我有点卡住了。如果有人能给我指路,那就太好了!

您应该显示更多的代码,以便更好地了解您做错了什么。

我假设您正在使用与在表视图中显示数据相同的上下文进行编辑,这是不应该做的

您应该使用背景上下文来保存更改,同时NSFetchedResultsController在viewContext上观察更改。一旦backgroundContext保存回来,其他上下文就会显示它。查看文档:https://developer.apple.com/documentation/coredata/using_core_data_in_the_background

最新更新