2010-03-07 53 views
2

我得錯過一些簡單的東西,但Google沒有幫助。重寫NSDocument的fileWrapperOfType會導致「文檔無法保存」。

我的文件保存並加載正常。 (我已經覆蓋了dataOfType以獲得一些東西。)然後我重寫fileWrapperOfType(準備創建一個包),並且我得到一個「The document'Untitled'不能保存爲'test'。」當我試圖保存的時候。即使當我將我的方法清空到我能想到的絕對最基本的形式時...

- (NSFileWrapper*)fileWrapperOfType:(NSString*)typeName error:(NSError**)outError 
{ 
    NSFileWrapper* worldWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil]; 
    return [worldWrapper autorelease]; 
} 

...我仍然無法保存。我錯過了什麼?

+0

作爲檢查返回值的一般做法和 - 如果可用的話,'NSError'輸出參數總是有用的。 – Jay 2014-03-15 21:55:13

回答

1

從文檔(重點礦山):

字典必須包含其值是文件封裝是成爲孩子和它的鍵是文件名的條目。

您使用nil所以我的猜測是,worldWrappernil,並返回nil被解釋爲不能夠保存文件。

+0

關閉;我已經檢查過,以確保worldWrapper不是零(而且是)。但是,這個答案確實促使我嘗試使用空字典而不是零字典,而且這很有效。儘管如此,這仍然看起來很不尋常。大多數方法不允許一個零字典來代替一個空字典嗎? – andyvn22 2010-03-07 23:35:08

+1

@ andyvn22:有些方法可以,有些不會。越來越常見的是,您需要傳遞所需類型(字典,字符串,數組等)的空值而不是零,所以即使您不確定是否有必要這樣做也是一個好主意。 – Chuck 2010-03-07 23:46:25