2017-10-07 9 views
1

私は写真を撮ってタイトルと説明を追加できる場所にアプリを作っています。しかし、今私は写真とタイトルを格納する必要があります。タイトル、説明、イメージのプロパティを含むオブジェクトを作成しようとしました。Swiftに画像や文字列をローカルに保存するには

完了したら、カスタムオブジェクトの配列をUserDefaultsでその情報とともに保存します。私のアイデアは、別のビューで、ユーザーがセルで撮影したすべてのコンテンツと画像を含むテーブルビューを表示しています。私はユーザーのデフォルトで情報を取得しようとしました。ユーザーがあまりにも多くの画像を保存するまでうまくいきました。 tableviewを持つviewControllerが読み込まれると、私のアプリケーションは遅くなり、最終的にクラッシュします。

すべてのカスタムオブジェクトをすべての配列にロードすると、すべてのピクチャがメモリにロードされますが、それらは使用されず、ユーザーに表示されます。だから私はそれが私がしたいことを作るための最善の方法ではないと思う。

デバイスのすべてのメモリを使用せずに、データをより効率的に作成したり、テーブルビューで使用したりする方が良い方法はありますか?

私は再び0からアプリを作成しています。

データと画像を効率的に保存する方法を教えてもらえますか?

答えて

0

データを格納するとき、あなたは基本的に2つのオプションがある - UserDefaultsまたはCoreData(またはレルムが、私もそれがCoreDataより良い作品いくつかのケースでは、それを好きではない)...

最初のものがあります保存するデータがあまりない場合に推奨されます。より多くのデータを操作するには、データベースCoreDataを使用します。

操作のために、CoreDataとNSFetchedResultsController(特にデータベース)...

あなたはFetchedResultsControllerのドキュメントhereを読むことができます.. 。コアデータの基礎here

あなたは最高の幸運を祈ります!

+3

UserDefaultsおよびCoreDataよりもいくつかのオプションがあります。写真はファイルとして書き込むことができます。データはさまざまな形式のファイルに書き込むことができます。確かに、UserDefaultsは、ピクチャまたは少しの情報以外のものを格納するために使用されるべきではありません。 – rmaddy

+0

@rmaddyなぜこれらのデータをファイルに保存したいのですか?それはちょうどこの質問の問題を複雑にする –

+0

ああ?どのようにイメージをファイルに書き込むのが複雑ですか? – rmaddy

0

ユーザーデータをデバイスに永続的に保存するためのいくつかのオプションがあり、アプリや電話機の再起動に耐えられるようになっています。 NSUserDefaultsは、通常、ユーザーの好みなど、少量のデータ用です。

多くのデータ、特に写真のような大きなバイナリオブジェクトを保存するときは、どのデザインを使用するかを決める必要があります。一つのオプション:その後、

  • 1つのディレクトリ内のすべての写真アプリ文書のストアとインデックス写真とそのメタデータにいくつかの簡単なルックアップストア(おそらくコアデータ、またはSQLiteの、あるいはフラット・ファイル)を使用します。または、索引付けを気にしない場合は、ディレクトリからファイル名のリストを読み込み、時間順に並べ替えることができます。

あなたは多分持っている他の問題は、ユーザーのために、一度にすべての写真をロードしようとしているということです。あなたが発見したように、一握り以上の写真があれば、このシステムは崩壊します。一度にいくつかの写真だけを読み込むためのメカニズムが必要です。ユーザーがその瞬間に表示する必要があるものだけが望ましいです。

たとえば、テーブルビューに写真を表示している場合、テーブルに表示されている10〜15枚の写真だけをロードすることができます。

関連する問題