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

cocoa - 用种子对象填充新的 NSPersistentDocuments / 关闭时丢弃更改

这是我的问题:

我有一个基于文档的应用程序,全部使用 Core Data 编写。创建新文档时(在应用程序启动时,或使用 File > New 或 Cmd+N),我需要使用初始种子对象填充此文档。假设我的文档是一个笔记本,所以我希望新文档在创建时包含一个空笔记。所以我无辜地插入我的对象(-[NSEntityDescription initWithEntity: insertIntoManagedObjectContext:),它工作。

我的问题是,文档似乎在打开后立即被编辑。这是一个糟糕的用户体验。此外,当关闭此文档而不添加任何进一步的更改时,会提示用户保存它(超级麻烦!)。

因此,到目前为止,我尝试解决此问题的方法是将操作设置为可在我的 undo-manager 上丢弃-[NSUndoManager setActionIsDiscardable:](设置为YESon [myDocument undoManager])。但这并没有改变任何东西。

为了调试,我覆盖-[NSDocument isDocumentEdited]并总是返回NO. 它部分解决了这个问题。当然,我不想处理那些东西,我想它应该固定在 undo-manager/persistent document/managed object context 方面。

有人遇到同样的问题吗?

非常感谢大家!

0 投票
1 回答
140 浏览

objective-c - NSPersistentDocument 重命名后防止警告表

每当我的文档被重命名时,自动保存就会被阻止,并且重命名后的第一次保存会显示如图所示的消息。

在此处输入图像描述

从技术上讲,这不是问题,因为任何一个按钮都会将用户带回可自动保存的状态,但这会让我的用户感到困惑。

我试过钩住这个方法

并使用各种风格的updateChangeCount:andupdateChangeCountWithToken: 但警告始终出现。

如何将文档置于重命名/移动后恢复标准自动保存行为的状态。?

0 投票
2 回答
578 浏览

cocoa - 未知类“_FITagEditorView”错误:这正常吗?

我正在使用该NSPersistentDocument课程。打开文档时,出现以下错误。

你们中有人有同样的错误吗?正常吗(是新特性引起的Mavericks)?我该如何解决?

0 投票
2 回答
308 浏览

cocoa - 更改 NSPersistentDocument 的默认 NSManagedObjectContext

核心数据新手在这里。我正在尝试更改 , 的默认值NSManagedObjectContextNSPersistentDocument以便对其进行初始化并将其与NSMainQueueConcurrencyType.

目前我正在这样做-windowControllerDidLoadNib:

这似乎工作正常。但我想知道 MOC 的初始化-windowControllerDidLoadNib:是否是最好的做法,或者它是否应该放在其他地方和/或以不同的方式初始化。

谢谢你的帮助。

0 投票
1 回答
125 浏览

macos - How to preset file format for document-based core data application's save-dialog to sqlite?

I started a document-based core data application targeting 10.9-only from the corresponding Xcode 5.1 template.

When the save-dialog is opened from the file-menu of my application, the user is presented with three file format options: Binary, SQLite, XML.

I don't want to give the user this choice but instead preset the file format to SQLite and no longer present the options in the save-dialog.

How can i achieve this?

0 投票
3 回答
394 浏览

macos - “另存为”不适用于我的 NSPersistentDocument 应用程序

我有一个 OS X 应用程序,它使用 的子类NSPersistentDocument来存储数据。Core Data 持久存储类型是 SQLite。我依赖于在 Xcode 中使用 Core Data 为基于文档的应用程序创建新项目时创建的标准菜单命令。

这个应用程序已经存在了大约两年,并且在不断发展。就在今天,我发现“另存为”在我的最新版本中不起作用。行为如下:

  • 我创建了一个新文档并输入了一些数据。
  • 我保存文档,关闭它,然后重新打开它。一切安好。然后我选择“另存为”,为文件选择一个新名称和位置。它被重命名,我可以输入更多数据。
  • 我保存文档,关闭它,重新打开它,它完全是空的。
  • 当我打开原始文档时,应该在另存为文档中的所有更改都在那里。
  • 应用程序不会崩溃或产生任何错误。

我很确定它曾经正常工作。我尝试了我的程序的第一个“官方”版本,并且行为是相同的(错误的)。

编辑:我创建了一个相同类型的新 Xcode 项目,只有一个核心数据实体。行为是相同的。与我的应用程序唯一不同的是,新项目自动使用了 10.7 Lion 引入的新“复制”菜单命令,而不是“另存为”。所以我必须按Option键来选择“另存为”。

我只在 10.9.3 上测试过,但在两台不同的 Mac 上测试过。有人知道在哪里看吗?

编辑2:它似乎与特定帐户有关(我在两台机器上的帐户)。它在另一个帐户上正常工作。

0 投票
1 回答
103 浏览

core-data - 运行时为 NSPersistentDocument 生成的自定义 NSManagedObjectModel

我有一个使用 Core Data 的基于文档的 (OS X) 应用程序,因此该文档是 NSPersistentDocument 的子类。当用户创建一个文档时,他/她指定一个设置来确定受管对象模型中特定实体具有的属性数量。例如,“棒球比赛”实体可以有 4 到 9 局属性,这取决于用户在创建文档时指定的数量。出于效率目的,托管对象模型是在文档创建时生成的,其中棒球比赛实体恰好包含指定的局数属性。因此,五局文档将具有与九局文档不同的管理对象模型。

要动态设置托管对象模型,我必须-(id)managedObjectModel在文档中覆盖。这是微不足道的,我可以轻松地提供具有适当数量的局数的托管对象模型。但是,如果用户打开一个保存的文档(局数未知),我再次被要求通过它为文档提供其托管对象模型-(id)managedObjectModel. 我的难题是,如果我不认识自己,我怎么能告诉文件它有多少局?托管对象模型是在运行时创建和设置的,因此明智的做法是在文档中添加某种属性,告诉我有多少局。我正在考虑基于每个文档类似于 NSUserDefaults 的东西,但不存在这样的东西。我能想到的唯一方法是存储任何明确给我局数的实体/属性,但在我给文档提供其托管对象模型之前,它是不可访问的!解决这个问题的正确方法是什么?

0 投票
1 回答
67 浏览

macos - NSPersistentDocument OSX 的正确目录

我正在编写一个鞋盒类型的应用程序,其中用户将数据输入到单个窗口中。我已经使用代码数据配置了数据模型。Apple 的文档指出,用户数据应存储在库目录中,但自动生成的代码似乎在应用程序支持目录中创建了一个目录,文档还指出,“不应存储用户数据”。哪个是对的?我的另一个问题是我不应该在 applicationDidFinishLaunching 方法中创建 NSPersistentDocument 的实例吗?

0 投票
0 回答
390 浏览

core-data - 使用 NSPersistentDocument、UIManagedDocument 和 iCloud

我目前在 App Store 上有一个基于 CoreData 的应用程序,它支持 iOS 和 OS X 设备上的 iCloud。它是一个基于“半文档”的应用程序;也就是说,它在技术上不是基于文档的应用程序,但它管理多个 Core Data 数据库。

我通过创建自己的类来管理数据库名称列表(例如 Shopping/ToDo/etc)和一个NSManagedObjectContext基于这些数据库名称实例化多个 s 的系统,使用启用了 iCloudNSPersistentStoreCoordinator的 s 来实现这一点。

我想尽快更新应用程序(即第 2 版)并且一直在阅读UIManagedDocumentNSPersistentDocument但这引起了我的注意:

注意:在 OS X 中,NSPersistentDocument 类不支持 iCloud。

我的问题是:是否可以NSPersistentDocument继承或建立一个系统,CoreData、iCloud、iOS 和 OS X 可以在一个基于文档的应用程序中结合在一起?

0 投票
1 回答
254 浏览

objective-c - 保存以前锁定的文档时 NSPersistentDocument 失败

使用我的NSPersistentDocument子类打开锁定文件时,我在控制台中收到以下消息:

尝试在路径 [URL] 读/写处添加只读文件。改为只读方式添加。这将是未来的一个硬错误;您必须指定 NSReadOnlyPersistentStoreOption。

文档窗口标题为“(文档名称) - 已锁定”。用户解锁后,进行更改然后尝试保存,保存失败并出现错误

保存时出错。

NSPersistentDocument 似乎无法识别用户已解锁文档并且没有以读/写模式重新打开它。这是一个错误NSPersistentDocument还是我在这里遗漏了什么?

我没有覆盖NSPersistentDocument.