2010-12-13 51 views
1

我從本教程在此進行一個基本的文本編輯器: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextArchitecture/Tasks/TextEditor.html在文本編輯器中保存圖形圖像?

我的文字編輯器,可以保存,寫,並在RTF和TXT格式的打開的文檔,但無法保存圖形用任何文本一起。格式化的文本被保存,並且當窗口打開時圖形顯示,但不保存。

+0

向我們展示您現在在做什麼來保存文檔 – 2010-12-13 22:35:38

回答

0

也許你的圖像不保存在同一目錄? 例如,如果我使用TextEdit創建一個rtf文檔,它將創建一個名爲something.rtfd的文件夾,幷包含TXT.rtf和所有圖像。

1

你快到了,你只需要在應用程序的Info.plist中實現更多功能。

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 
{ 
NSData *data; 
[self setString:[textView textStorage]]; 
NSMutableDictionary *dict = 
[NSDictionary dictionaryWithObject:NSRTFTextDocumentType 
forKey:NSDocumentTypeDocumentAttribute]; 

注意,在詢問要保存的數據保存到文件,不管是什麼,它被設置爲使用NSRTFTextDocumentType而非NSRTF * d * TextDocumentType的方法。 RTFD意味着帶有附件的RTF,它保存了一個.rtfd文檔,該文檔實際上是一個包/捆綁包(作爲一個文件呈現給用戶的文件夾)。保存爲NSRTFTextDocumentType將有效地丟棄不適合RTF文檔的內容,如圖像。

步驟12後是這樣的:

在這個階段,它的發展,你的編輯器打開,只用????的擴展,節省了文件。要使應用程序能夠使用識別的文件類型保存和打開文檔,您需要使用Xcode在Xcode的Resources文件夾中的應用程序屬性列表文件中配置文檔類型設置。 (Xcode模板使用您的項目名稱和-Info.plist命名文件。)您可以通過選擇組&文件列表中的文件並使用內置編輯器在Xcode中編輯此文件。單擊披露三角形將CFBundleTypeExtensions下的第一項的值編輯爲文檔文件的首選擴展名。

有關屬性列表文件的更多信息,請參見基於文檔的應用程序概述中的「Storing Document Types Information in the Application's Property List」。有關應用程序屬性列表的完整詳細信息,請參閱運行時配置指南

基本上,現在,您正在傳遞上述數據方法中的通用DocumentType。一旦您在Info.plist中聲明可以處理RTF和RTFD數據(作爲2個單獨的條目),您將在該方法中以不同的值傳遞,具體取決於用戶在NSSavePanel的「格式」彈出式按鈕中選擇的內容。您可以檢查傳入的類型的值,然後相應地指定NSRTFTextDocumentType或NSRTFDTextDocumentType。

你可以看看TextEdit的Info.plist作爲你的Document類型的基礎,但一定要把NSDocument的子類名稱改爲你自己的,這樣NSDocumentController就知道要使用哪個類。