plist と NSFileManager へのオブジェクト (配列型や NSObject 型など) の書き込みに違いはありますか。
もしそうなら、私は何千もの画像データとmp3曲をplistに書き込むことができます.
plist と NSFileManager へのオブジェクト (配列型や NSObject 型など) の書き込みに違いはありますか。
もしそうなら、私は何千もの画像データとmp3曲をplistに書き込むことができます.
plist ファイルは XML (ほとんどがテキスト) ファイルであるため、書き込み前にデータをアーカイブし、読み取り後にアーカイブを解除する必要があります (こちらを参照)。NSKeyedArchiver
NSFileManager
ただし、一般的なファイルシステム操作のラッパーであり、データを格納するためにデータをテキストにマーシャリングする必要はありません。したがって、保存されるデータははるかに小さくなり、読み取り/書き込みがはるかに高速になり、当然の選択です。
NSFileManagerは、ファイルのコピー、ファイルの削除、ファイルの移動などを行うために使用されます。NSFileManager を使用して新しいファイルを書き出すことはありません。既存のファイルを操作する場合にのみ適しています。plist と NSFileManager を使用するという意味では、plist に匹敵するものではありません。
ただし、答えようとしている質問が、すべてのデータを plist または別のファイルに保存する必要がある場合は、それによって異なります。何千もの画像と mp3 を保存する場合は、それらすべてを 1 つの plist に保存したくないことは間違いありません。plists は、速度とメモリの両方の点で、大量の情報を保存および更新するには非効率的な形式です。たとえば、plist 内の 1 つの文字列を更新する場合、plist 全体をメモリに読み込んで更新し、plist 全体をディスクに書き戻す必要があります。Foundation が提供する標準の plist 関数を使用して、plist の一部だけを更新することはできません。plist にすべての画像と mp3 データが含まれていると、非常に遅くなります。
ディスク上に個別のファイルとして保存されている画像と mp3 のマニフェストとして plist を使用することで回避できる場合がありますが、それでも遅くなる可能性があります。ファイルのマニフェストには代わりに SQLite または Core Data を使用し、各画像と mp3 をファイル システム内の個別のファイルとして保持することをお勧めします。または、各アイテムにメタデータを保存する必要がない場合は、マニフェストはまったく必要ありません。マニフェストに plist を使用することになった場合は、NSPropertyListBinaryFormat_v1_0 オプションを使用して plist をバイナリ plist として保存してください。これにより、plist がディスク上で占有するスペースが少なくなり、再度読み取るときにデシリアライズが速くなります。