问题标签 [nsmanagedobjectcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
475 浏览

iphone - 在内存存储和 SQLite 存储中使用 NSManagedObject 子类实体

我想使用单个 NSManagedObject 子类来表示一个项目。然而,很多时候,我将代表的项目是短暂的,不会被保存到持久存储中。似乎内存存储将是正确的设置。

然而,有几次用户可以选择“保存”一个项目,因此我希望将该项目持久化到 SQLite 存储中。

好像我需要两个商店。我需要两个上下文吗?是否有推荐的方法将项目从内存存储移动到“已保存”持久存储?在混合相同类型的持久性和非持久性托管对象时,人们可以推荐任何其他建议或问题吗?

0 投票
1 回答
1604 浏览

iphone - 每个线程有多个 NSManagedObjectContext 实例可以吗?

每个线程必须有一个,但除此之外......你应该有更多吗?多吃有害吗?

例如,我很想围绕每个选项卡有一个 NSManagedObjectContext 构建我的应用程序,处理出现在该特定选项卡上的整体持久存储的子集。

这样,我可以让选项卡 GUI 监听“其”上下文的通知,而忽略其他的。异步网络调用一次只会更改一个选项卡的上下文。

(注意:不使用 NSFetchController 是因为该类在 iOS 3.2 之前的主要错误,这是一个 3.0+ 应用程序)

我是否误解了如何使用 NSManagedObjectContext?如果是这样,任何人都可以指出使用额外 NSManagedObjectContext 实例的“好”/“坏”原因吗?

更新:这适用于离散上下文,但是当我试图推断在一组数据上使用多个上下文来处理临时更改时,一切都变得非常错误:cf 关于该主题的问题:如何制作/使用临时 NSManagedObjects?

0 投票
1 回答
122 浏览

iphone - 为什么我得到的 ViewController 实例与我推送到 navigationController 上的实例不同?

为什么我会得到一个不同的 HistoryViewController 实例,而不是我实例化并推送到 navigationController 上的实例?

创建的不同实例没有我设置的任何属性。

ProfileHomeViewController.m

HistoryViewController.h

历史视图控制器.m

0 投票
3 回答
3128 浏览

iphone - 如何制作/使用临时 NSManagedObjects?

我在 Apple 的文档中找不到简单、常见的模式:

  1. 加载核心数据存储
  2. 下载新数据,在内存中创建对象
  3. 将一些新数据保存到存储中(通常“只有新的位/未更改的位”)

相反,我可以找到这些替代方案,但没有一个是正确的:

  1. 不要在内存中创建对象(嗯,这意味着丢弃所有关于对象的好处。使用大量 NSDictionary 编写代码,除了解决 CoreData 的故障之外没有其他用途。一般不可行)
  2. 创建对象,然后删除您不想要的对象(Apple 在文档中建议这样做,但他们的通知出现严重错误:当您尝试保存时,那些“删除”会出现,即使它们不应该/不能)
  3. 在辅助上下文中创建对象(Apple 强烈暗示这是正确的,但显然没有提供任何方法让您将对象从临时上下文移动到真实上下文,而不执行上述操作(删除您刚刚创建的对象,然后执行保存)。这通常是不可能的,因为对象通常需要连接到新上下文中的引用,并且保存会失败)

果然,应该没这么难吧?

如果我必须编写所有代码来手动深度复制一个对象(通过向下迭代它的所有字段和数据结构),为什么 CoreData 首先存在?这是 CD 内部提供的基本功能。

到目前为止,我工作的唯一解决方案是选项 2(来自苹果的文档),当 Apple 为原本不应该保存的对象发送 NSNotifications 时,使用自定义启发式“猜测”(但 Apple 无论如何都会发送通知) )。这是一个可怕的黑客。

编辑:澄清:

我不知道如何正确发送 Apple 的通知。Apple 的代码似乎将插入转换为“更新”,将“临时对象”转换为“删除”等。我听不到“新对象”。

0 投票
1 回答
3213 浏览

iphone - CoreData:从未保存的上下文中获取对象

在我将 ManagedObject 插入上下文之后,我想稍后但在保存上下文之前获取它(我会在插入所有对象后保存)。如果上下文之前没有保存,那么稍后使用有关这些对象的获取来查询上下文似乎不会返回任何内容。有没有办法只保存到最后?(我想我可以将我的对象保存在数组或字典中并查询,但我认为 coredata 会为我做这个)

0 投票
3 回答
10374 浏览

objective-c - 如何获取保存到 Core Data 的托管对象上下文的对象的 ID?

我有这个代码:

我想知道插入托管对象上下文的对象的 id。我怎么能得到那个?

该 id 是否会在该对象的生命周期内保持不变,或者它是否会持续存在于其下的 sqlLite 数据库中,并且可以在提取操作期间用于唯一标识它(我的最终目标)。

任何帮助表示赞赏// :)

0 投票
1 回答
1860 浏览

iphone - MapKit 如何将 managedObject 从 mapView 传递到 mapDetailView

我正在尝试将一个 managedObject 从一个带有多个注释的 mapView 传递到一个 mapDetailView,只传递一个 managedObject 的注释。这在 tableView 到 mapDetaiView 中效果很好。任何帮助,将不胜感激。我的代码...

0 投票
1 回答
804 浏览

iphone - TabBar iphone 应用程序中的 CoreData 和 Shared ManagedobjectContext

我,在coredata iphone TabBar应用程序上工作并将appdelegate managedObjectContext传递给所有视图和子视图。在某些情况下,我需要为实体A创建新记录,而实体A没有被用户保存,我需要创建另一个实体B通过使用相同的共享上下文。现在,我的问题是如果我保存实体 B 的上下文,那么它也会保存实体 A。我不想保存实体 A,直到或更少的用户不想保存它。

我只能看到一种方法是为实体 B 或其他东西创建单独的上下文......?

请帮我解决这个问题。

谢谢,

0 投票
2 回答
506 浏览

objective-c - 在核心数据的上下文之间共享非持久对象?

我想知道是否有办法在同一线程中运行的NSManagedObject两个或多个对象之间共享一个。NSManagedObjectContext

我有以下问题:我通过应用程序中的所有代码共享一个主要上下文,并且为我发出的每个远程获取请求创建了几个不同的上下文。(我创建了一个自定义类,它远程获取并将服务器中找到的所有对象插入到他自己的中NSManagedObjectContext)。这些获取请求可能会同时运行,因为它们使用NSURLConnection可能在不同时间结束的对象。如果相同的远程对象被不同的连接获取,我将在保存和合并上下文与主要的那一刻得到重复。(即,具有相同远程 ID 但不同的对象objectID)。

一种可能的解决方案是在创建每个对象后立即保存(并因此保留)每个对象,但我不能这样做,因为它可能有一些关系可能仍未填充并且在保存操作期间不会验证。

我真的很期待一种方法,它允许您在上下文之间共享对象的相同非持久实例。如果有人遇到此问题并提出解决方案,我将很高兴知道!

0 投票
1 回答
766 浏览

objective-c - NSManagedObjectContext:自动更新与否?

我需要了解一些有关 NSManagedObjectContext 更新的信息。我有一个 UISplitView,在 RootView 上有一个 UITableViewController,在 Detail View 上有一个 UIViewController。当我用数据连续点击时,我将一些数据加载到标签和 UITextView 中,我可以在其中更新该字段:

行。这工作正常,描述已更新。此外,有人可能想要删除一行:

所以这是我的问题:如果我评论有关保存我的 MOC 的行,冒险只是暂时删除。如果您退出应用程序并重新打开它,该对象仍然存在。更新字段时不会发生这种情况。我想知道为什么以及是否应该将 moc 也保存在 textViewDidFinishEditing 方法中。先感谢您。