问题标签 [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 投票
2 回答
1788 浏览

iphone - 声明 NSManagedObjectContext 时出错

我正在尝试创建一个 NSManagedObjectContext 对象。他们的错误如下:

'NSManagedObjectContext' 之前的预期说明符限定符列表

这是我的头文件:

有人知道我可能会在这里失踪吗?

0 投票
2 回答
323 浏览

iphone - 拒绝核心数据中的规则无法正常工作

这是我的对象模型:

一个客户可以有多个项目(可选),但一个项目必须只有一个客户(必需)。一个MemoryEntry 只能有一个Project(可选),并且同一个Project(可选)可以有不同的MemoryEntry(s)。

对象模型

删除后:

  • Client.projects 有拒绝规则
  • Project.client 有一个无效规则
  • Project.memos 有一个拒绝规则
  • MemoEntry.project 有一个无效规则

在各自的 TableViewController 中删除 Client、Project 或 MemoEntry 时调用的代码:

粗体问题:

如果我创建一个项目然后删除它的父客户端,代码会正确地跟随到IF语句中。如果我访问“已删除”客户端,它仍然存在,我可以编辑clientName和其他属性,保存它,一切都很好。我可以去项目并打开项目并查看更新后的客户的clientName. 但是当我通过项目访问客户端时,我的应用程序退出了。

我的删除规则设置不正确吗?[context save:&error]即使出错,调用是否会保存删除?有什么想法吗?

*edit - 断点错误停止的行:

抛出的错误:

0 投票
5 回答
3689 浏览

iphone - managedObjectContext 保存失败,错误为 null

什么会导致错误返回null,这就是我所拥有的

上面的方法是类方法,不知道为什么报错没有任何信息。

这个方法是这样调用的

[HSCoreDataUtility saveContext:self.managedObjectContext];

当 modalViewController 关闭并返回到 NavigationController 时,我需要保存上下文,但它通过了一个错误,现在我想我知道它没有被保存的原因,但不应该给出错误我有线索吗?但日志只是说“错误(空),(空)”

有什么想法吗

0 投票
2 回答
433 浏览

iphone - 核心数据:不能使用以前保存的对象

我真的被这两件事困住了。

我正在尝试做的事情:

  1. 我的实体很简单。这是一个“记录”。
  2. 它有一个“名称(NSString)”和“父级(relationShip)”
  3. “父”连接到自身,实体“记录”。

好的,现在我要创建“parentRecord”和“simpleRecord”。

我尝试使用该代码:

它是“parentRecord”,我将其保存以备将来使用,并在“groupRecord”变量中捕获。

现在我必须创建一个“simpleRecord”。这是一个代码:

我重新排列了这段代码,所以 *我不在[self saveContext];“parentRecord”中做* 。只需从变量中使用它groupRecord。并将其保存在“childRecord”块中。那么一切都很好。记录保存到存储中,我可以从那里读取它。

为什么会发生?如果我想先创建“parentRecord”,保存它,然后 - “childRecord”,我应该怎么做?

为什么我不能使用以前保存的对象?NSManagedObjectContext 是一样的——怎么了?

我对“经典”SQL 已经足够好,但 Core Data 正在扼杀我的大脑。

谢谢大家。


更新:

看,saveContext 没有崩溃的理由。这是:

  1. 创建父实体。
  2. 将其设置为 appDelegate 的变量。
  3. 保存上下文(对于父母)。
  4. 创建子实体。
  5. 从 appDelegate 的变量设置 parentProperty。应用程序崩溃!

和:

  1. 创建父实体。
  2. 将其设置为 appDelegate 的变量。
  3. ///////////保存上下文(为父级)。
  4. 创建子实体。
  5. 从 appDelegate 的变量设置 parentProperty。没有任何崩溃。
  6. 这次保存上下文。
  7. 现在一切都很好。

父属性 - 只是属性的名称。这不是 MOM 文件中父级的一些额外设置。

我想做具有层次结构的实体。并且没有 Xcode 为我创建的其他方法 - 只是一个属性。

0 投票
1 回答
586 浏览

iphone - 在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示

我有一个基于 CoreData 的应用程序,它支持摇动撤销。这目前工作正常,但是当我摇动设备时,撤消会立即发生,而不会首先显示 NSUndoManager 通常免费提供的常用撤消提示。

我从“撤消架构”文档中阅读了“在 iPhone 上使用撤消”,并且我是:

  • 执行canBecomeFirstResponder,返回YES
  • becomeFirstResponder制作视图控制器viewDidAppear
  • resignFirstResponder制作视图控制器viewDidDisappear
  • 将视图控制器中的重新声明self.undoManager为读/写
  • 在方法中创建一个NSUndoManager和设置(我已经验证它被调用)。self.undoManagerUIViewController init
  • 在设置self.managedObjectModel.managedObjectContext.undoManagerself.undoManager中设置为managedObjectModel. 再一次,我已经验证这被调用了。如果我不这样做,撤消根本不起作用。

我已经尝试过的故障排除:

  • 检查撤消确实有效(我看到对我的 managedObjectModel 的更改已恢复)
  • canBecomeFirstResponder正在调用验证
  • 检查是否self.undoManager在撤消操作期间调用了访问器(不是)。

所以我的问题是:

  • 在什么情况下撤消有效但不显示撤消提示?
  • 您接下来会尝试什么来解决此问题?
0 投票
1 回答
6190 浏览

ios - iPhone 和核心数据 - 删除 NSManagedObject?

我正在尝试删除托管对象上下文,但不是删除对象本身,而是将所有即时变量设置为 null。在删除 NSManagedObjectContext 的瞬间时我做错了什么吗?

0 投票
2 回答
7402 浏览

core-data - 'NSInternalInconsistencyException',原因:'+entityForName:找不到实体名称的 NSManagedObjectModel

我有一个基于窗口的应用程序,其中集成了标签栏和导航栏。导航栏上有一个自定义按钮,可以打开表格视图。

单击表格的单元格时,我想打开一个新的表格视图控制器。但是,一旦我单击第一个表格的单元格,我就会得到一个异常

我已经检查过AddForm它在正确的位置。

我已经尝试了上面和其他线程上给出的所有解决方案,但仍然卡住了。我希望有一个人可以帮助我。

流程是这样的

ListButton(点击打开一个列表视图)->一个表格视图打开->(点击一个单元格应该打开一个新的表格视图控制器并从核心数据中获取数据)

我的根视图控制器代码在第二个表视图控制器文件中……那是我做错了吗?我这样做是因为在那之前我不需要核心数据......

请帮忙

提前致谢

0 投票
1 回答
2212 浏览

iphone - NSManagedObjectContexts 和多线程

假设我们有一个需要显示地点列表并在 3 个线程上运行的应用程序:

  1. 主线程
  2. 主线程后台同步(与服务器同步位置)
  3. 地理编码线程(在后台对地点进行地理编码)

在所有 3 个线程中,我都有专用的NSManagedObjectContexts(MOC)。如果每个 MOC 都可以更改底层数据(例如,主线程可以将地点添加到您的收藏夹,而后台同步可以更改地点的名称,而地理编码线程添加纬度/经度信息),应用程序将必须NSManagedObjectContextDidSaveNotification在每个mergeChangesFromContextDidSaveNotification如果一个 MOC 被保存(而不仅仅是将它们合并到主线程的 MOC 中),则将其传播到其他线程中相应的其他 MOC,对吗???

因为现在我正在这样做,但感觉不对:(

我有一本字典,我用它来保存当前正在运行的线程及其 MOC。每当其中一个 MOC 弹出时,NSManagedObjectContextDidSaveNotificationI 循环通过该数组并将其发送mergeChangesFromContextDidSaveNotification到所有其他 MOC/线程。当然,我还添加了一个观察者,NSThreadWillExitNotification以便在其中一个线程用完时从数组中删除 Thread/MOC。字典的所有添加/删除操作都被锁定。这就是我现在有点卡住的地方。有时,当我打电话

在遍历 MOC/线程字典时,我收到以下异常:

显然,这是由竞争条件引起的。在遍历字典时(我只在提取其对象数组时锁定它),其中一个线程退出,因此引用不再有效。但是,如果我将字典锁放在整个循环的前面,我会遇到死锁,因为调用

在某些情况下,循环内需要永远(还不知道为什么),从而导致整个应用程序停止。waitUntilDone:NO在这种情况下打电话安全吗?因为这似乎可以解决它。我只是不知道,如果我不小心用这个打开了潘多拉的盒子......

问候,

塞巴斯蒂安

0 投票
1 回答
2266 浏览

delegates - 我如何摆脱协议中找不到的“-managedObjectContext”

我的应用程序在 iPhone 设备和模拟器上运行。一切似乎都很好,但我在构建过程中看到了编译器警告。我讨厌提供不完全正确的代码,所以我需要摆脱这个警告。编译器警告是:

newsReaderController.m:24:警告:在协议中找不到“-managedObjectContext”

该代码是:

CoreData 操作的 managedObjectContext 在 App Delegate 中设置。核心数据框架是重要的,应用程序就像一个魅力。

对我有什么提示吗?我现在使用 Objective-C 已经有几个星期了,但似乎每天都有新的东西要学:)

0 投票
2 回答
1420 浏览

iphone - 如何在 Objective-C 中动态创建实体?

我正在构建一个 iPad 应用程序,我需要用户在其中动态创建实体。我已经有 3 个程序使用的实体。
你能帮我写代码怎么做吗?

我想根据我的理解来理解整个结构我必须创建新的 managedObjectModel,添加新的实体,而不是将它与现有的合并,对吗?