2011-09-19 92 views
1

我想將NSMutableDictionary對象的內容保存到文件中。我該怎麼做呢 ?我已經知道如何使用NSDictionary對象完成此任務,但我不知道如何將此NSMutableDictionary轉換/複製到NSDictionary ...除非有直接將NSMutableDictionary的內容寫入文件的方法...我強調NSMutableDictionary對象包含NSDictionary類型的對象。如何將NSMutableDictionary保存到文檔中的文件中?

THX幫助,

斯特凡

回答

1

NSMutableDictionaryNSDictionary一個子類:你可以使用任何你想使用NSDictionary。從字面上看,只需將對象傳遞給您現在使用的代碼NSDictionary即可。

在更一般的意義上,如果你確實需要從NSMutableDictionary得到真正不變的NSDictionary,只是呼籲NSMutableDictionarycopy

其他方法包括[NSDictionary dictionaryWithDictionary:][NSDictionary alloc] initWithDictionary:],它們都基本上是相同的東西。

+0

我的位置路徑'不知道writeToFile:原子性地直接在一個NSMutableDictionary對象上工作。這只是一個例子,顯示我們無法使用NSMutableDictionary,無論我們使用NSDictionary – Steve

+1

它絕對會工作。你爲什麼會這麼想?沒有什麼操作,我可以想到,你會做一個NSDictionary,當嘗試在NSMutableDictionary上會失敗。無論如何,正如我所提到的,如果您有理由,可以使用'[myMutableDict copy]'或'[NSDictionary dictionaryWithDictionary:myMutableDict]'從一種類型轉到另一種類型。我想通了, – adpalumbo

+0

。其實你是對的!對不起 – Steve

1

如果你只是擺動到NSDictionary文件。你會看到有用於保存字典文件

writeToFile:atomically:

的方法寫入的詞典內容的屬性列表表示給定的路徑。

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag 

參數

路徑: 處的路徑寫入文件。 如果路徑包含代字符(〜)字符,則必須在調用此方法之前使用stringByExpandingTildeInPath對其進行擴展。

標誌: 一個標誌,指定文件是否應以原子方式寫入。

如果標誌爲YES,字典將寫入輔助文件,然後將輔助文件重命名爲路徑。如果標誌爲NO,則字典直接寫入路徑。 YES選項保證路徑(如果存在的話)即使系統在寫入期間崩潰也不會被破壞。

返回值

如果文件寫入成功則返回YES,否則返回NO。

此方法在寫出文件之前遞歸地驗證所有包含的對象是屬性列表對象(NSData,NSDate,NSNumber,NSString,NSArray或NSDictionary的實例),並且如果所有對象都不是屬性列表對象,因爲生成的文件不會是有效的屬性列表。

如果字典的內容都是屬性列表對象,則可以使用此方法編寫的文件用類方法dictionaryWithContentsOfFile或實例方法initWithContentsOfFile:來初始化新字典。

所以這塊您正在尋找的代碼可能是這樣的:

[myDict writeToFile:path atomically:YES] 

其中myDict是你有字典和path是你想把它保存到

+0

我已經知道這個方法。是一種將NSMutableDictionary轉換爲NSDictionary以調用writeToFile的方法:atomically方法 – Steve

+0

不需要轉換它... NSMutableDictionary是NSDicitonary的子代,所有在NSDictionary上工作的函數都可以在NSMutableDictionary上工作。不要混淆,但這是一條單行道。採用NSMutableDicitonary的函數可能不適用於NSDicitonary。 – ColdLogic

相關問題