objective-c - 从 NSData 创建多个 NSDocument 的最简洁方法

标签 objective-c cocoa macos nsdocument

我正在 OS X 上编写一个基于文档的应用程序。该应用程序的一个功能是“导入”功能。

该函数将从磁盘读取数据文件,其中包含原始 BLOB 数据,并且可以解析为一个或多个文档。对于此功能,我必须以编程方式创建文档。主要问题是, NSDocumentController 仅具有用于从现有数据创建文档的 makeDocumentWithContentsOfURL:ofType:error: 方法。有多种方法可以创建我的文档,我想知道哪一种是最简洁的方法。

  1. 我可以将文档的数据写入磁盘上的单独文件中,并为每个文件调用 makeDocumentWithContentsOfURL:ofType:error: 。这看起来相当不雅观,并且可能会因大量数据而减慢应用程序的速度。
  2. 我可以使用 NSDocumentController 创建空文档并填充数据。
  3. 我可以在导入函数中创建文档,并使用 addDocument: 方法将它们添加到 NSDocumentController 中。我不知道这是否有效,因为这个方法似乎是子类化的钩子(Hook)。
  4. 我可以继承 NSDocumentController 并添加 makeDocumentFromData:ofType:error: 方法。我认为这会更干净,但更复杂。

你觉得怎么样?

最诚挚的问候, 克里斯

最佳答案

如果您的目标是 Tiger 或更高版本,为什么不使用 -[NSDocument readFromData:ofType:error] 方法,然后调用 -[NSDocumentController addDocument:]?那么你就可以开始了,不涉及子类化:)

要为每个对象创建数据,您可以使用 -[NSData bytes]、一些指针算术和 -[NSData initWithBytesNoCopy:length:] 获取指向字节的指针code> 这样就无需创建临时文件。

关于objective-c - 从 NSData 创建多个 NSDocument 的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985272/

相关文章:

cocoa - 如何为 GUI Cocoa 应用程序创建命令行前端?

swift - 如何获取 NSToolbar 高度?

ios - 如何在 ios 中异步读取 Documents 目录中的文件

objective-c - 转换后检查重叠 View

objective-c - 将 CALayer 渲染为 PDF 输出时保持矢量图形

iphone - 调试 UITextField 的技巧

ruby - ruby dev : mac os x or linux 使用什么(本地)服务器

python - ctypes 导入不适用于 python 2.5

objective-c - 在 iOS 4.2.1 上,strnlen 未在此范围内声明

ios - 如何获取 UIImage 中形状的 UIBezierPath 或以特定形状裁剪 UIImage