问题标签 [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 回答
1203 浏览

iphone - insertNewObjectForEntityForName:inManagedObjectContext:返回 NSNumber 错误?

我比较精通CoreData,并且已经使用它几年了,几乎没有困难。突然间,我现在对一个错误感到目瞪口呆。对于我的生活,我无法弄清楚为什么

突然返回某种奇怪的 NSNumber 实例。GDB 说返回的对象是 NSManagedObject 的正确自定义子类,但是当我打印 NSManagedObject 本身的描述时,我收到以下错误:

更奇怪的是,我可以使用 setValue:forKey: 设置一些关系和属性,一切都很好。但是当我尝试设置一次特定的关系时,我得到了这个错误:

有没有人遇到过这样的事情?我已经尝试清理所有目标,重新启动一切,甚至将模型更改为有问题的关系是一对一而不是一对多。没有任何区别。

0 投票
4 回答
1078 浏览

iphone - insertNewObjectForEntityForName:inManagedObjectContext: 返回 NSNumber 错误?

我比较精通CoreData,并且已经使用它几年了,几乎没有困难。对于我的生活,我无法弄清楚为什么

突然返回某种奇怪的 NSNumber 实例。GDB 说返回的对象是 NSManagedObject 的正确自定义子类,但是当我打印 NSManagedObject 本身的描述时,我收到以下错误:

更奇怪的是,我可以使用 setValue:forKey: 设置一些关系和属性,一切都很好。但是当我尝试设置一个特定的关系时,我得到了这个错误:

我已经尝试了从清理所有目标到重新启动 Mac 和 iPhone,甚至编辑模型以使所讨论的关系是一对一而不是一对多的一切。无论我做什么,都会出现同样的问题。有没有人见过这样的东西?

0 投票
3 回答
4527 浏览

iphone - Core Data 性能 deleteObject 和保存托管对象上下文

我试图找出在我的核心数据数据库中批量删除对象的最佳方法。

我有一些具有父/子关系的对象。有时我需要通过清除所有现有子对象并将新对象添加到 Core Data 来“刷新”父对象。此操作的“全部删除”部分是我遇到麻烦的地方。我通过遍历孩子并为每个孩子调用 deleteObject 来实现这一点。

我注意到,当我删除 15,000 个对象时,在所有 deleteObject 调用之后的 NSManagedObjectContext:Save 调用非常慢。

我怎样才能加快这个电话?通过设置不同的参数或以另一种方式设置我的模型,我可以在保存操作期间意识到并避免发生的事情吗?我注意到在此操作期间内存也会出现峰值。我真的只想“删除 * from”。

谢谢。

0 投票
2 回答
3816 浏览

iphone - 如何从详细视图中删除核心数据条目?

我正在使用类似于苹果的核心数据配方示例代码的应用程序。我希望能够从详细视图中删除条目,就像苹果的联系人应用程序一样。

下面的代码是删除第一个条目而不是选定的条目。不知道我做错了什么。

0 投票
1 回答
1101 浏览

core-data - NSManagedObjectContext 可以自动重新故障对象吗?

我正在尝试创建一个应用程序,它允许后台线程更新核心数据对象,而用户可能正在读取相同的数据。

我的方法是使用多个 NSManagedObjectContexts,然后在后台线程执行-save:操作之前,我获取用户当前正在处理的对象并递归地触发其所有属性和关系的故障。这样我就拥有了用户可以在我的 NSManagedObjectContext 中使用的所有对象,而不会看到已经更新的值。

但这只有在 NSManagedObjectContext 不能自己决定例如内存使用率太高时才有效,并且开始出错我没有明确引用的对象(除了通过 NSManagedObject 关系)。

所以问题是,NSManagedObjectContext 能否决定一个对象需要重新故障,而无需我的干预?

谢谢你的努力,马库斯

0 投票
3 回答
991 浏览

iphone - NSManagedObjectContext 是自动保存的还是我在查看 NSFetchedResultsController 的缓存?

我正在开发一个 iPhone 应用程序,我在主表视图控制器中使用 NSFetchedResultsController。我在主表视图控制器的 viewDidload 中这样创建它:

然后,在后续视图中,我在上下文中创建了一个新对象:

TestObject 有几个相关的对象,我以相同的方式创建并使用提供的 add...Objects 方法添加到 testObject 中。

然后,如果在保存上下文之前,我按下取消并返回主表视图,则没有按预期显示。但是,如果我重新启动应用程序,我在上下文中创建的对象会显示在主表视图中。怎么会?起初,我认为这是因为 NSFetchedResultsController 正在从缓存中读取,但正如您所见,我将其设置为 nil 只是为了进行测试。此外,[context hasChanges] 在我重新启动后返回 true。我在这里想念什么?

0 投票
2 回答
290 浏览

iphone - 在我的应用程序中丢失 NSManaged 对象

我一直在做一个有趣的小 iPhone 应用程序。有一次,我从我的 Persistant 商店中获取了一堆玩家对象,然后将它们显示在屏幕上。我还可以选择添加新的播放器对象(它们只是自定义 UIButtons)和删除选定的播放器。

但是,我相信我遇到了一些内存管理问题,因为应用程序没有保存正在显示的“玩家”。

示例:我显示了 4 个玩家,我将它们全部选中,然后将它们全部删除。他们都消失了。但是如果我退出然后重新打开应用程序,它们都会再次出现。仿佛他们从未离开过。所以在我的代码中的某个地方,它们并没有“真正”被删除。

所以在这个片段中(在 viewdidLoad 方法中),我将玩家从持久存储中取出,然后删除我不想要的对象(那些 boolValue 为 NO 的对象),其余的被保留。这行得通,我很确定。我认为问题在于我在哪里移除了球员。这是该代码:

第二个代码片段的重要部分是我将 currentMultiPlayer 设置为 NO。NO NO NO NO NO,当视图加载时,他们不应该回来,永远不会。直到我这么说。代码中没有其他相关部分将其设置为 YES。这让我觉得……也许他们没有得救。也许这不会保存,也许这些对象不再被管理,因此它们不会被保存。 NSManaged 对象是否有生命周期(隐喻)?Players 数组与我在“viewDidLoad”方法中设置的相同,SelectedPlayers 保存被选中的玩家,引用 NSManagedObjects。它与从阵列中删除它们有关吗?我很困惑,一些见解将不胜感激!

0 投票
5 回答
25106 浏览

cocoa - 如何将 NSManagedObject 从一个上下文复制或移动到另一个上下文?

我有一个我认为是相当标准的设置,一个从不保存的暂存器 MOC(包含从网上下载的一堆对象)和另一个永久的 MOC,它保留对象。当用户从 scratchMOC 中选择一个对象添加到她的库中时,我想要 1)从 scratchMOC 中删除该对象并插入到 PermanentMOC 中,或者 2)将该对象复制到 PermanentMOC 中。Core Data FAQ说我可以像这样复制一个对象:

(在这种情况下,context2 将是永久MOC。)但是,当我这样做时,复制的对象出错了;数据最初是未解决的。当它确实得到解决后,所有的值都为零;原始 managedObject 中的任何数据(属性或关系)都不会被实际复制或引用。因此,我看不出使用这个 objectWithID: 方法和使用 insertNewObjectForEntityForName: 将一个全新的对象插入到永久MOC 之间有什么区别。

我意识到我可以在permanentMOC 中创建一个新对象并从旧对象手动复制每个键值对,但我对这个解决方案不太满意。(我有许多不同的托管对象都有这个问题,所以我不想在继续开发时编写和更新所有这些对象的方法。)有更好的方法吗?

0 投票
1 回答
544 浏览

iphone - Iphone - managedobjectcontext 没有正确保存

知道为什么

在视图控制器中实现时(通过向下钻取表视图访问)将无法正确保存信息?我从一开始就传递moc(rootview移交给tableview,tableview递归地将它传递给自己,直到调用uiview),如果我弹出/推送tableview(不幸的是viewWillAppear中的reloadData没有想更新它)。

我应该传递 managedObject 并从中获取上下文吗?

0 投票
2 回答
4218 浏览

iphone - 核心数据:NSLog 输出不显示“字段”

我不理解 NSFetchRequest 返回的数组的 NSLog 输出。

我正在读取我的数据库并将内容放在一个数组中,循环遍历数组,然后使用 NSLog 输出内容。我不太明白日志文件中的输出。下面的代码:

日志文件内容:

这是什么意思?:

我想真正从数据库中查看该字段的内容。

我的数据库中有 15 条记录,每条记录中有 12 个字段。从我的基本理解来看,我的stories数组似乎保存了数据库中的整个记录​​,而不是单个字段。也许我需要一个二维数组来完成这个,如果是这样,我该怎么做呢?

最终,我想遍历数组并为每个字段创建 XML 标记。但是一步一步...

在此先感谢,斯蒂芬