我正在 OS X 上编写一个基于文档的应用程序。该应用程序的一个功能是“导入”功能。
该函数将从磁盘读取数据文件,其中包含原始 BLOB 数据,并且可以解析为一个或多个文档。对于此功能,我必须以编程方式创建文档。主要问题是, NSDocumentController 仅具有用于从现有数据创建文档的 makeDocumentWithContentsOfURL:ofType:error: 方法。有多种方法可以创建我的文档,我想知道哪一种是最简洁的方法。
- 我可以将文档的数据写入磁盘上的单独文件中,并为每个文件调用
makeDocumentWithContentsOfURL:ofType:error
: 。这看起来相当不雅观,并且可能会因大量数据而减慢应用程序的速度。 - 我可以使用
NSDocumentController
创建空文档并填充数据。 - 我可以在导入函数中创建文档,并使用
addDocument:
方法将它们添加到NSDocumentController
中。我不知道这是否有效,因为这个方法似乎是子类化的钩子(Hook)。 - 我可以继承
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/