将对象(ex数组类型和NSObject类型)写入plist和NSFileManager之间是否有任何区别。
如果可以,我可以将1000张图像数据和mp3歌曲写入plist。
答案 0 :(得分:2)
由于plist文件是XML(主要是文本)文件,因此您必须在写入之前归档数据,并在阅读后取消归档(请参阅NSKeyedArchiver
{{3 }})。
NSFileManager
是通用文件系统操作的包装器,并且不需要将数据编组为文本以便存储它。因此,存储的数据将更小,更快速地读/写,并且是显而易见的选择。
答案 1 :(得分:1)
NSFileManager用于执行复制文件,删除文件和移动文件等操作。您不会使用NSFileManager写出新文件。它只适用于处理现有文件。在使用plist和NSFileManager的意义上,它与plist不具有可比性。
但是,如果您要回答的问题是我应该将所有数据存储在plist中还是存储在单独的文件中,那么这取决于。如果您要存储1000个图像和mp3,那么您绝对不希望将它们全部存储在一个plist中。 Plists是一种低效的格式,用于存储和更新大量信息,包括速度和内存。例如,如果要更新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在磁盘上占用更少的空间,并在再次读取时更快地反序列化。