2011-08-04 37 views
0

右邊的窗口中我已經成功地在我的可可應用程序實現了一個NSDocument類也能夠正確地保存數據。但是在打開文件時我遇到了問題。獲取NSDocument的readFromData :::

這是我的基本設置:

NSDocument MyFile的== XIB文件=> MyFile.xib

NSObject的 FileClass作爲處理類

FileClass是壓縮一個類/解壓縮文件並連接到MyFile.xib中的窗口文本框。保存是通過默認的NSNotificationCenter完成的。數據需要在這個類中處理,因爲它不包含原始NSString。

比方說,我有需要打開我有三個NSDocument情況下,現在通過NSNotificationsCenter發送其數據的三個文件。因爲我有三個NSDocument,所以我有三個窗口和三個FileClass實例。現在,如果正確的FileClass接收數據,那就好運了,因爲我無法過濾接收到的數據是否針對此窗口提出。隨機的FileClass現在處理文件並設置其關聯文本視圖的文本。所以窗口1可以顯示被認爲數據在窗口3.

被示出的數據流:

NSDocument => readFromData => NSNotificationCenter =>隨機FileClass =>相關聯的TextView。

爲了縮小範圍:我如何將數據路由到正確的窗口,我如何/在哪裏包括FileClass在此構造?

在此先感謝!

保羅

回答

1

這是一個重大的設計缺陷指示,如果您有通過通知中心,以您的觀賞類強迫你的文檔數據。你爲什麼要這樣做?你試圖繞過哪些問題?

+0

似乎你是對的。我可以在NSDocument類中實現我的自定義類。但是,如何訪問我的文本字段呢?我無法將文本視圖綁定到Interface Builder中的NSDocument類,或者我錯了嗎? – Paul

+0

當然可以! NSDocument屬於控制器類組,這意味着它的目的是從模型類(讀取的數據)獲取信息,解釋它們並將它們發送給用戶的視圖類(文本視圖,自定義視圖等)相互作用。從Interface Builder加載XIB文件的NSDocument實例實際上被設置爲XIB「文件所有者」。所以在IB中,「文件所有者」框實際上是您的NSDocument實例。 – Fabian

+0

請記住NSDocument已經初始化,並且在XIB和所有界面的東西被加載之前很久就從磁盤讀取數據。這意味着您確實需要一些模型類來存儲您從磁盤讀取的任何內容,或者至少將這些數據保存在NSDocument的某個實例變量中,以便您可以在稍後階段用數據填充視圖。 – Fabian