问题标签 [nsmanagedobject]

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 回答
1133 浏览

iphone - 保存 NSManagedObjectContext 的实例不会永久保存可变的可转换属性

我使用 Core Data + sqlite 作为数据缓存。应用程序将文件读​​入核心数据,然后使用核心数据运行应用程序。保存到 NSManagedObjectContext 和文件。不过,我注意到,如果我退出应用程序并重新加载它而不重新填充 Core Data 数据库,则使用 -save: 保存的一些(但不是全部)数据不会保存到数据存储中。

对我的托管对象的更改都是在主线程上的一个批次中完成的,在所有更改完成后发送 -save: 消息。未保存的数据是可转换属性,是核心数据对象中唯一的可转换属性。这是保存对象的代码:

中止();没有被调用,所以我假设 -save; 被正确调用。

我怀疑它是否相关,但是在主线程上运行此代码后,我在不同的线程上使用新的 NSManagedObjectContext 执行 NSFetchRequest。在其他线程上没有发生与 Core Data 相关的其他事情。

为什么不保存可转换属性?

0 投票
1 回答
909 浏览

iphone - NSManagedObject init/dealloc 等价物

foo我在 NSManagedObject 子类中有一个对象 ivar bar,只要该对象存在,我就需要一直在那里。

为了确保foo正确创建,我将 awakeFromInsert 子类化为创建foobar创建。我在 awakeFromFetch 中做了同样的事情,以确保从商店中获取的时间foobar

为了解决这个问题,我foo在 willTurnIntoFault 和 prepareForDeletion 中释放。

然而,事实证明,当我删除时bar,prepareForDeletion 和 willTurnIntoFault 都被调用,释放foo两次。

我意识到我可能不能在 prepareForDeletion 中释放它,但我想知道这里的最佳实践是什么,所以我明白什么时候会变成错误等等。对于普通对象,我只是创建foo在 init 中并在 dealloc 中销毁它。

谢谢!

0 投票
3 回答
711 浏览

iphone - NSManagedObject 核心数据 - 在不是结构或联合的情况下请求成员“属性名称”

设想:

我创建了一个名为“Importing”的 xcode 项目,我在其中读取了一个 XML 文件并将内容导入到我的核心数据数据库中。然后我有第二个“主”项目,在其中我将 SQLite 文件添加到主包中,并使用 Core Data Books 示例中的代码导入。我在“导入”项目中对 .xcodedatamodel 进行了更改,我发现在 finder 中并将其拖到我的“主”项目中,然后在那里生成 NSManagedObject 模型文件。到目前为止,这已经奏效,但 Xcode 似乎很困惑......

最近我删除了一些属性并添加了 1 个新属性。然后我做了与上面相同的过程,现在它说“在不是结构或联合的东西中请求成员'属性名称'”。如果我输入文章“型号名称”。并按esc 智能还在拾取旧属性?

在“导入”项目中,虽然一切正常,但我在任何属性上都没有收到任何错误,而且智能是否正确?

请指教,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 回答
715 浏览

core-data - willTurnIntoFault 被多次调用,导致崩溃

在撤消最初创建相关对象的某些代码时,在NSManagedObject我的重写实现的子类中被调用了两次。willTurnIntoFault当尝试在密钥路径上双重注销 KVO 时,这会导致崩溃。

Apple 文件称这是取消注册 KVO 的正确位置。

一点上下文 - 撤消操作涉及从其父视图中删除模型的相应视图。视图保留了它的模型。

所以我的问题是:什么样的程序员错误会导致在willTurnIntoFault子类中被调用两次NSManagedObject

注意:以前我dealloc在这个类中重写,但后来意识到这不推荐用于 NSManagedObject 的子类。我已经将此代码移入-didTurnIntoFault. 我目前没有覆盖 Apple 文档说您不应该覆盖的任何其他方法。

0 投票
1 回答
804 浏览

iphone - 将方法添加到从 NSManagedObject 子类化的类

我想为一个对象添加一个方法(从 NSManagedObject 子类化)

但是那个方法不能用

我有什么错。REMBox 的正常(核心数据)属性运行良好。

0 投票
1 回答
1480 浏览

iphone - 将 ivar 添加到 NSManagedObject 子类

我有一个与 iPhone 中的核心数据一起使用的 NSManagedObject 类的子类。但是,我有一个临时“字段”(ivar),我想在该类中添加(但我不想将它保存在数据存储中)。尝试使用非正式和正式协议,但它们都给了我类似“静态变量”的行为。(它的行为类似于类变量而不是实例变量)。有什么建议吗?

我的第一次尝试,创建了测试“虚拟类”,它应该是 NSManagedObject 的子类,然后我创建了测试类别

这些是通常的 setter 和 getter。这是我使用Test类的方式

我也可以直接弄乱 NSManagedObject 子类(这是我的实体),但我不认为这是这样做的方法。

0 投票
5 回答
32058 浏览

core-data - 如何判断 `NSManagedObject` 是否已被删除?

我有一个NSManagedObject已被删除的,并且包含该托管对象的上下文已被保存。我知道如果 Core Data 将在下一次保存操作期间要求持久存储删除对象,则isDeleted返回。YES但是,由于保存已经发生,因此isDeleted返回NO

在保存包含上下文之后NSManagedObject,判断一个是否已被删除的好方法是什么?

(如果您想知道为什么引用已删除托管对象的对象还不知道删除,那是因为删除和上下文保存是由后台线程发起的,该线程使用 执行删除和保存performSelectorOnMainThread:withObject:waitUntilDone:。)

0 投票
2 回答
176 浏览

iphone - 托管对象方法签名

我管理了下面给出的对象;以下为 initFruitStand 方法中的 addCratesObject 引发的警告。为什么它抱怨它不匹配签名虽然它匹配?问题是什么?

在函数'-[FruitStandViewController initFruitStand:]'中:

'FruitStand' 可能不会响应 -addCratesObject:

'(没有匹配方法签名的消息将被假定返回'id'并接受'...'作为参数。)

我的视图控制器.m

FruitStand.h

FruitStand.m

板条箱.h

板条箱.m