【问题标题】:How to "sync" UI with Core Data?如何将 UI 与 Core Data “同步”?
【发布时间】:2015-10-08 00:09:55
【问题描述】:

我想知道将 UI 与 Core Data 同步的常用方法是什么,例如,当您在表格视图中显示 Core Data 存储的数据时,并且您想在用户点击对象时显示有关对象的其他信息表格视图中的单元格,您如何将表格视图单元格链接到 Core Data 中的特定对象?我见过很多人不建议使用 ID,因为 Core Data 不是以这种方式设计的,但是如果我们不使用 ID 怎么办?我本来想做这样的事情:“好的,选定的单元格有这个 ID,让我们进入 Core Data 获取具有相同 ID 的对象”但是如果我不这样做,我该怎么办?

对于需要这种链接的其他情况,同样的问题...在我的情况下,我需要地图上的图钉和核心数据对象之间的链接,以便在点击图钉时显示附加信息,一点有点像在苹果地图中......

我该怎么办?

谢谢。

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

    您可以通过使用NSFetchedResultsController 来做到这一点 - 您可以从CoreDataTableViewController (.h .m) 继承您的UITableViewController,并且您需要覆盖的唯一方法是cellForRowAtIndexPath:。然后可以像这样直接访问对象:

    MyCustomObject *obj = [self.fetchedResultsController objectAtIndexPath:indexPath];
    

    【讨论】:

    • (当我不使用表格视图时?)
    • 那么您只需使用ViewControllerexistingObjectWithID:error:objectWithID: (good explanation) 来管理您的数据
    【解决方案2】:

    对于第二个问题,当您不使用表格视图时,有两种选择。一是您可以获取对象(假设您位于堆栈的最顶部),二是更常见的是,您可以在情节提要期间使用简单的依赖注入将 NSManagedObject 实例传递给您。

    在表格视图下方/之后的任何视图都应该从不需要获取或调用 -objectWithID: 之类的东西,因为该对象已经在内存中并且为您提供 ID 的控制器已经拥有物体。只需像任何其他语言一样传递对象即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 2011-11-08
      • 2014-02-07
      • 2017-03-17
      相关资源
      最近更新 更多