sách gpt4 ai đã đi

iphone - 编辑/创建新对象(iPhone)时 NSManagedObjectContext 的正确用法是什么?

In lại 作者:行者123 更新时间:2023-12-03 21:12:56 29 4
mua khóa gpt4 Nike

我试图找出在查看、编辑和创建 NSManagedObjects 时使用 NSManagedObjectContexts 的正确方法。我觉得文档和示例已经解释了如何在最基本的情况下使用它们,但我不确定在稍微复杂的设置中正确的方法是什么。

设置:

  • 3 个主屏幕:对象列表、编辑对象屏幕和新对象屏幕。
  • 另一个线程正在下载对象以添加到后台列表中。

要求:

  • 列表屏幕使用 MOC 和 NSFetchedResultsController 来获取其所有对象。
  • 编辑和新建对象屏幕使用 MOC 来保存/删除对象,并使用 NSFetchedResultsController 来建立关系。
  • 下载的对象需要 MOC 将其对象保存到 Core Data(在主线程上)。

câu hỏi:

  • 我需要多少个 MOC?
  • 我应该如何操纵这些 MOC?

可能的答案:

  • 拥有一个从未编辑且在列表屏幕中使用的“查看”MOC。使用单独的 MOC 进行编辑、新对象屏幕和下载。保存这些 MOC 后,将更改合并回“查看”MOC。这样,任何更改在保存之前都不会影响“查看”MOC。这就是我一直在做的事情;它似乎没有我希望的那么顺利。编辑和查看之间存在脱节,当我知道事情可能发生变化时,我无法检查它们,而是必须等待 NSFetchedResultsController 委托(delegate)方法完成并检查所有可能发生变化的事情。如果我需要更改 ListView 中的某些数据,这也会变得很困难。

  • 拥有一个 MOC 来处理所有事情。这是我第一次尝试,但不确定如何处理编辑和创建。现在我了解更多了,我想我可以编辑对象或创建一个对象并在取消时回滚。在cimgf上,我看到了一个bưu kiện这看起来很相似,它表示围绕编辑/创建和取消时创建撤消分组。然后我想我可以在下载的对象上使用单独的 MOC,因为它可能会在用户在主 MOC 中编辑时完成并保存。

  • 无论如何,重点是我不知道正确的方法是什么。你能帮我吗?

第一个可能答案的断开连接示例

  1. 在编辑 moc 中创建了一个对象 (1)。已保存。通过通知与 View moc 合并。
  2. 创建了一个新的 moc,因为我正在后台下载对象。更新了与 (1) 相关的一些对象。已保存。通过通知与 View moc 合并。
  3. 在编辑 moc 中编辑 (1)。已保存。通过通知与 View moc 合并。
  4. 问题:由于编辑 moc 从未获得新的 moc 更改,因此在保存时,它会删除受其影响的所有新 moc 更改。
  5. 解决方案:我意识到我还可以将更改合并到编辑 moc 中,或者始终使用新的 moc 来编辑内容。然而,我不断遇到这样的小事情,并且必须找到解决方案,所以这让我相信这不是最好的答案。

1 Câu trả lời

每个线程至少应该有一个 MOC(它们不是线程安全的)。因此,您可以为下载程序(在后台线程中)设置一个 MOC,并为主线程列表中的事件、编辑和新 build 置另一个 MOC。

当你说存在脱节时,你能说得更具体一些吗?您是否正在使用通知(NSManagedObjectContextDidSaveNotification)并在收到该通知时执行mergeChangesFromContextDidSaveNotification。请记住,mergeChangesFromContextDidSaveNotification 应该在主线程上执行。

在带有 NSFetchedResultsController 的 View Controller 中,您是否正确处理了 NSFetchedResultsControllerDelegate 的所有情况?

关于iphone - 编辑/创建新对象(iPhone)时 NSManagedObjectContext 的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824002/

29 4 0
Bài viết được đề xuất: iphone - UITableViewController.view 崩溃
Bài viết được đề xuất: iphone - iPhone 闪存驱动器的生命周期
Bài viết được đề xuất: iPhone, Xoay + EAGLView, Xoay =
Bài viết được đề xuất: iphone - iPod Touch 上没有麦克风错误
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com