Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为NSDocument';s readFromData:::_Objective C_Nsnotificationcenter_Nsdocument - Fatal编程技术网

Objective c 为NSDocument';s readFromData:::

Objective c 为NSDocument';s readFromData:::,objective-c,nsnotificationcenter,nsdocument,Objective C,Nsnotificationcenter,Nsdocument,我已经成功地在我的Cocoa应用程序中实现了一个NSDocument类,它还能够正确地保存数据。但我在打开文件时遇到了问题 这是我的基本设置: NSDocumentMyFile==xib File=>MyFile.xib NSObjectFileClass作为处理类 FileClass是一个压缩/解压缩文件的类,它连接到MyFile.xib中窗口的文本字段。通过默认的NSNotificationCenter进行保存。数据需要在此类中处理,因为它不包含原始字符串 假设我有三个文档需要打开,我有三个

我已经成功地在我的Cocoa应用程序中实现了一个NSDocument类,它还能够正确地保存数据。但我在打开文件时遇到了问题

这是我的基本设置:

NSDocumentMyFile==xib File=>MyFile.xib

NSObjectFileClass作为处理类

FileClass是一个压缩/解压缩文件的类,它连接到MyFile.xib中窗口的文本字段。通过默认的NSNotificationCenter进行保存。数据需要在此类中处理,因为它不包含原始字符串

假设我有三个文档需要打开,我有三个NSDocument实例现在通过NSNotificationSceneter发送数据。因为我有三个NSDocuments,所以我有三个windows和三个FileClass实例。现在,如果正确的FileClass接收到数据,那就太幸运了,因为我无法过滤接收到的数据是否建议用于此窗口。现在,一个随机文件类处理该文件并设置其关联文本视图的文本。因此,窗口1可以显示被认为在窗口3中显示的数据

数据流:

NSDocument=>readFromData=>NSNotificationCenter=>random FileClass=>associated TextView

缩小范围:如何将数据路由到其正确的窗口,以及如何/在何处在此构造中包含FileClass

提前谢谢


Paul

如果您必须强制文档数据通过通知中心进入查看类,则表明存在重大设计缺陷。你为什么要这么做?你想回避什么问题?

看来你是对的。我可以在NSDocument类中实现我的自定义类。但是我如何访问我的文本字段呢?我无法将文本视图绑定到Interface Builder中的NSDocument类,还是我错了?当然可以!NSDocument属于控制器类组,这意味着它的目的是从模型类(您读取的数据)中获取信息,解释它们并将它们发送到视图类(文本视图、自定义视图等)以供用户交互。从Interface Builder加载XIB文件的NSDocument实例实际上设置为taht XIBs“文件的所有者”。因此,在IB中,“文件所有者”框实际上是NSDocument的实例。请记住,NSDocument在加载XIB和所有接口之前很久就已初始化并从磁盘读取数据了。这意味着您确实需要一些模型类来存储从磁盘读取的数据,或者至少将这些数据保存在NSDocument的某个实例变量中,以便在以后的阶段用数据填充视图。