2012-04-25 58 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