アプリの仕組み
現在、5 つの地域での活動を調査するためのアプリが開発中です。各アクティビティは、かなりの量のプロパティを持つ JS オブジェクトとして表されます。アクティビティは、カテゴリやマップなど、それぞれのタブでさまざまなフィルターを介して表示できます。各メイン フィルター内には、日付、地域、アクセシビリティなどでフィルター処理するオプションがあります。
チャレンジ
デバイスに保存する必要がある JSON は多数あり、iOS と androidの両方のサポートが必要です。最良のシナリオでは、データがデータベースと同期している必要があり、すべてのデータがデバイスで利用可能である必要があります。優れたエクスペリエンスを得るには、アプリが機敏である必要があります。これは、データの取得をできるだけ高速にする必要があることを意味します。さらに、データのフィルタリングは、できるだけ迅速に行う必要があります。
これまでに検討された実行可能な解決策 (まだ完全には解決されていません)
MongloDB Titanium Store アダプターを使用したMongloDB 、特効薬?
このアプローチは、最初は特効薬のように思えました。このプロジェクトは有望に見えますが、1 人の英雄的なハッカーによって維持されており、プロジェクトにはいくつかのドキュメントが必要です。ソースを調べて、API をハッキングしましたが、今度は console.log と jasmine のテストが役に立ちませんでした。さらに重要なことは、まだ完全に完成しておらず、MongoDB に比べて機能が不足していることです。すばらしいプロジェクトです。このプロジェクトがさらに普及し、将来、絶望的なチタン開発者を支援できるようになることを願っています。
JSONDB、iOS のみ
このアプリは、iOS と Android の両方のプラットフォームで動作する必要があるため、これを試す理由はありません。さらに、JSONDB は単一のコンテキスト内でのみ機能するため、これも深刻な懸念事項です。
Ti ファイルシステムと JSON.stringify + JSON.parse、メモリ効率が悪い
アプリの機能でもある、保存されたアイテムの小さなリストを保存するための実行可能なソリューション。しかし、他の投稿では、JSON メソッドの使用に伴うメモリ制限を超える問題が Android で指摘されています。これは私の問題の中で最も小さいものではないかもしれませんが、全体的なメモリ効率は大きな問題になるでしょう. Titanium のファイルの読み取りと書き込みのパフォーマンスのベンチマークを見たことがないので、読み取りと書き込みがどれほど大きな影響を与えるかはわかりません。大きなオブジェクトのフィルタリングも大きな問題です。アンダースコアはこの種の大きなデータを処理しません。大きなオブジェクトを反復することは、私がどのアプローチを選択しようとも大きな問題です。
大きなお尻のグローバル オブジェクト
ファイルシステムと実質的に同じアプローチですが、グローバルに保持するだけです。これには同じ問題があり、単なる非倫理的な慣行です。
SQLite、うんざり
高度に文書化された JSON データを SQlite に変換すると、サムスン ギャラクシー ファンボーイよりも悪いように聞こえます。これに関するフィードバックはありますか?
複数のファイル + 維持する SQLite + 遅延ロード、ユニコーン、レインボー?
解決策を切望しているので、この投稿を書いている途中で何かに気付くかもしれません。おそらく10から16のメインカテゴリーがあり、それぞれに1から4のサブカテゴリーがあります。サブカテゴリのすべてのアクティビティを独自のファイルに保持します。これは非常にスリムな JSON です。カテゴリをブラウズすると、各サブカテゴリが独自の TableViewSection でレンダリングされ、各サブカテゴリは、ユーザーがどれだけ下にスクロールされたかに基づいてテーブルに個別に追加され、コンテンツの効果的な遅延読み込みが行われます。非常に高速に読み取られるファイルが 1 つだけあります。このビュー内で、さらにサブフィルターを追加すると、既に読み込まれているアイテムのみに影響を与え、このアイテムを反復することは合理的に手頃な価格です。
データの更新も非常に効果的で、変更される可能性のあるファイルのみが更新されます。SQLite データベースは、有効期限のあるすべてのアクティビティの日付を維持でき、今後 7 日または 1 か月の独自の JSON ファイルを動的に構築できます。これにより、ほとんどの使用においてカレンダー ビューが非常にスムーズになります。ただし、将来の日付を選択するのは悪夢です。
やはりマップは難しい…
これをすべて読んだ場合は、ありがとうございます。似たようなことを経験したことがある場合、または何かに夢中になっている可能性がある場合は、お気軽に返信してください。私は執筆をやめ、コーディングをやめ、眠りにつく必要があります。