问题标签 [nspersistentdocument]

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

objective-c - 创建持久存储时 NSPersistentDocument 崩溃

最近我在我的核心数据模型中添加了一个新实体,因此我为模型创建了一个新版本并为它创建了一个映射模型。但是,现在我的 NSPersistentDocument 崩溃了,没有明显的原因:

控制台日志:

*** -[NSCFArray insertObject:atIndex:]: 尝试插入 nil

如果有帮助,这是堆栈跟踪: 堆栈跟踪

删除映射模型没有帮助,所以我猜是因为文档试图加载错误/无数据模型,但我还没有找到一种方法来说明它应该使用给定的数据模型。

编辑:当我使用自己的 iOS 核心数据抽象类时,一切都很好。所以万恶之源似乎是NSPersistentDocument。实际上我不想切换回 NSDocument 并且必须再次自己实现核心数据处理,所以非常感谢任何帮助!

0 投票
1 回答
610 浏览

xcode4 - 将 NSArrayController 绑定到 XIB 视图中 Xcode4 中 NSPersistentDocument 子类中的 moc

我有我的 NSPersistentDocument 的子类,他的超类有 [self managedObjectContext]

试图在 xib 中设置我的 NSArrayController 的绑定。当我设置参数的 Moc 时,绑定到选项是:文件的所有者、应用程序和首选项。(NSArrayController 的实体在我的上下文中设置为实体名称)

模型 KeyPath 默认为 self。然后我将表列的值绑定到 NSArrayController (我不确定如何在 Xcode 4 下重命名).arrangedObjects.(我的实体属性的名称)

UI 上有一个填充按钮,用于自行填充上下文。

当我跑步时。UI 不会出现,我在控制台中得到的所有内容都会重复:-[MyDoc persistentStoreCoordinator]: unrecognized selector sent to instance 0x10015adf0

建议?

0 投票
1 回答
392 浏览

core-data - 在 NSPersistentDocument 中创建新的 NSManagedObject 拒绝保存,即使撤消显示尽可能

我有一个 CoreData / NSPersistentDoc 应用程序。它工作正常。

我向 MOM 添加了一个新实体,并更新了版本。

现在,当我在 MOC 中创建该实体的新实例时,“保存”菜单项将保持禁用状态,直到/除非我创建应用程序中已有的旧实体的任何实例。

标题栏上的红点按钮正确变为黑色,表明文档已更改 - 但 OS X / NSDocument 拒绝承认这一点 - 无法进行保存。

有任何想法吗?

0 投票
3 回答
711 浏览

core-data - 如何正确更新 Xcode4 中的模型而不损坏它?

我在使用 Xcode3 时从来没有遇到过任何问题,但是在使用 Xcode4 时,当我更新核心数据模型时,Apple 的代码大约 3 次失败,出现可怕的“持久存储迁移失败,缺少源管理对象模型”。错误。

这是我的设置(我如何将项目配置为自动迁移):

  1. NSPersistentDocument,来自 Apple 的模板
  2. 覆盖 Apple 的模型加载方法,我唯一要做的就是在 storeOptions 字典中提供两个标志,它们会打开自动迁移

这是我一直在使用的过程(它已经解决了 Xcode4 中的 1 个错误!)

  1. 选择模型(在 Xcode4 中命名为“something.xcdatamodel”,左侧有一个twisty)
  2. 转到编辑器菜单,选择“添加新模型版本...”
  3. 将新版本命名为比上一个大的 1 整数 - 例如,如果以前是“4”,则将新版本命名为“5”
  4. 在右侧窗格中,将当前模型版本更改为新创建的版本
  5. XCode4 错误的解决方法:选择任何文件,然后选择新创建的模型。如果不这样做,Xcode 会在新创建的模型上显示选择,但会改为编辑以前的模型,这肯定会破坏 CoreData 中的所有内容
  6. 编辑您的模型;在这种情况下,我正在向现有实体添加一个新属性
  7. 节省。建造。跑。... 碰撞。

除了,正如我所说,大约 3 次中的 2 次可以正常工作。一旦它工作一次,它(显然)很好 - 轻量级迁移完成,下一次保存保存在新模型版本中。

所以我猜我在上述步骤中做错了什么,但我已经通过文档 5 或 6 次并且看不到任何明显的东西。NSPersistentDocument 文档都已过时并无济于事 - 但我也多次在 iPhone 上进行过轻量级迁移,所以我对这样做有相当的信心,这对我来说似乎是正确的。


我尝试过/检查过的其他事情:-iPhone Core Data Lightweight Migration Cocoa 错误 134130:找不到源存储的模型(不;只包含根 xcdatamodel)

0 投票
1 回答
122 浏览

cocoa - 处理来自 NSPersistentDocument 的命令行参数

我有一个基于 NSPersistentDocument 的应用程序,它具有基于不同条件和数据的三个不同视图,并且每个都可以正常工作。

现在客户还想从 shell 脚本运行应用程序。

例如

open -a myapp.app --args -data list.csv启动应用程序打开视图 A(数据网格)

open -a myapp.app --args -data list.myownformat -startline 6启动应用程序打开视图 B(饼图)

我必须在哪里以及如何处理 NSPersistentDocument 子类中的命令行参数?

许多应用程序允许启动 GUI 的双重启动 GUI 或 CLI,但我无法理解如何从 NSPersistentDocument 实现此结果。

欢迎任何最佳实践、提示、源代码

0 投票
2 回答
1169 浏览

objective-c - NSPersistentDocument“不支持的存储类型”异常

我现在两次遇到这个问题:Xcode 4.1、Lion 和一个 NSPersistentDocument 核心数据项目。

我的程序运行良好,直到我向模型中的一个实体添加了两个“二进制数据”属性。现在,当我运行应用程序并尝试保存文档时,会从configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:.

上次我开始收到此错误时,是在我更新项目目标设置中的设置时。那时,重置更改的设置没有效果,我必须从备份中恢复 Xcode 项目文件,然后它才能工作 - 所以它与代码无关。

这是抛出异常时的日志:

我目前正在使用 SQLite 存储类型。我还尝试删除添加到实体的属性,但得到相同的结果。我还清除了所有缓存,清理了项目,并删除了 DerivedData 文件夹。我也关机了autosavesInPlace。我觉得这是某种 Xcode 错误。

有没有人见过这个?谢谢!

0 投票
2 回答
350 浏览

macos - NSPersistentDocument – 如何访问窗口?

我想设置我的 NSPersistentDocument 对象的窗口的一些属性。我如何访问它?

有没有比这样更好的方法?

0 投票
1 回答
204 浏览

cocoa - 撤消管理器未与 NSPersistentDocument 保持同步

我在核心数据数据库中有一些计算值,我需要在保存之前对其进行更新。基本上我对一些实体进行编号以简化它们之间的导航。

目前我正在观察NSManagedObjectContextWillSaveNotification并尝试在那里进行编号。我所做的更改似乎已保存,但撤消管理器似乎仍有一些修改。这使得文档看起来像是发生了变化(标记在关闭按钮上),即使托管对象上下文说它没有 ( hasChanges)。如果我撤消一次,文档看起来没有任何变化,但反过来,托管对象上下文确实如此。

撤消管理器是否以某种方式将自身重置在错误的位置,或者我做错了什么?

更新

我在其中进行重新编号的有点混淆的代码如下所示:

包含一个文本字段,该_contentViewController字段将被解析为SomeItem.

0 投票
3 回答
2570 浏览

cocoa - -makeWindowControllers 是初始化 NSPersistentDocument 的最佳位置吗?

使用 加载现有文档时NSPersistentDocument,作为初始化的一部分,我想准备一些内容:

当我将此代码放入时-init,获取请求不会返回任何结果。

NSPersistentDocument我在将视图控制器组件从我的子类重构为新子类时遇到了这个问题NSWindowController。我曾经在 中处理这个初始化-windowControllerDidLoadNib:,但现在不再调用了。

如果我将代码从 移动-init到 ,-makeWindowControllers我会得到我期望的结果。-makeWindowControllers准备这样的内容真的是正确的地方吗?

0 投票
1 回答
1576 浏览

macos - NSManagedObjectContextObjectsDidChangeNotification 并不总是立即调用

我有一个使用 NSPersistentDocument 的 Mac 应用程序。我想在删除对象以使用 Core Data 保存此信息时收到通知。所以我正在监听 NSManagedObjectContextObjectsDidChangeNotification。通常在删除对象时立即调用它,但有时仅在保存持久性文档后调用它,并且之前不会通知所有已删除的对象。因为我想让用户直接导出所有现有对象(而不是已删除的对象),我必须做什么才能立即收到通知以保存删除信息,还是必须以其他方式使用它?