2012-04-25 23 views
0

將對象(ex數組類型和NSObject類型)寫入plist和NSFileManager是否有區別。將文件寫入plist和NSFilemanager的區別

如果可以,我可以寫1000張圖片數據和mp3歌曲到plist。

+1

寫文件給plist?那是什麼意思? plist是一種不是文件系統的文件格式。 – trojanfoe 2012-04-25 06:04:33

+0

@trojanfoe編輯我的問題 – user1300511 2012-04-25 06:09:08

回答

1

NSFileManager用於執行復制文件,刪除文件和移動文件等操作。你不會使用NSFileManager來寫出一個新文件。這僅適用於處理現有文件。這與使用plist和NSFileManager的意義上的plist沒有可比性。

但是,如果您試圖回答的問題是我應該將所有數據存儲在plist中或單獨的文件中,那麼這取決於。如果你要存儲1000個圖像和mp3,那麼你絕對不想將它們全部存儲在一個plist中。對於存儲和更新大量信息(無論是在速度還是內存方面),平板電腦都是效率低下的格式。例如,如果您想更新plist中的單個字符串,則必須將整個plist讀入內存,然後將其更新,然後將整個plist寫回磁盤。您無法使用standard plist functions provided by Foundation更新plist的一部分。如果你的plist包含了你所有的圖像和mp3數據,它將會非常慢。

你或許可以使用plist作爲你的圖像和mp3的清單,它們作爲單獨的文件存儲在磁盤上,但即使這樣也會變得緩慢。我建議使用SQLite或Core Data代替文件清單,然後將每個圖像和mp3保存爲文件系統中的單獨文件。或者,如果您不需要爲每個項目存儲任何元數據,則根本不需要該清單。如果你最終使用清單的plist,請確保使用NSPropertyListBinaryFormat_v1_0選項將plist保存爲二進制plist。這會使plist在磁盤上佔用更少的空間,並且在再次讀取時會更快地反序列化。

2

是plist文件是一個XML(主要是文本)文件,則必須存檔你的寫作前的數據和解除封存看完之後(見NSKeyedArchiverhere)。

NSFileManager然而,它是一般文件系統操作的包裝,並且不需要將數據編組爲文本以存儲它。所存儲的數據因此會小得多,讀/寫更快,並且是明顯的選擇。

+0

技術上現代的plists使用二進制格式,但概念仍然存在。 – StilesCrisis 2012-04-25 06:16:27

+0

@StilesCrisis同意 - 但它不是存儲數千個圖像的明顯選擇。 – trojanfoe 2012-04-25 06:18:36

+0

絕對正確,我個人不會使用plist來聚合文件數據。 – StilesCrisis 2012-04-25 06:20:03