0

最新の SDK と XCode 4.5.2 で iPhone アプリを開発しています。

この質問は、どのモバイル プラットフォームにも当てはまります。

アプリがスターになったときに Web サービスに接続し、情報をダウンロードする必要があります。この情報はサーバー上で変更される可能性があります。一部のレジスタは削除、更新、または挿入される可能性があります。

問題は、その情報をどこに保存するかわからないことです。デバイスのメモリに保存するのは悪い考えだと思います。テキストファイルまたはデータベースに保存する方が良いと思います。どう思いますか?

別の質問があります:サーバー上で一部のデータが変更されたかどうかを知るにはどうすればよいですか? ユーザーがアプリに星を付けるたびに同じデータをダウンロードするのは悪い考えだと思います。

これを行うには、起動時にスプラッシュ画面が表示されたときに Web サービスに接続します。AppDelegate のどこにコードを配置する必要がありますか?

どんな提案でも大歓迎です。

4

3 に答える 3

3

AppDelegate のどこにコードを配置する必要がありますか?

コードを AppDelegate に含めることは、あまり良い考えではありません。代わりに、viewController をスプラッシュ スクリーンとして使用できます。このviewControllerをrootViewControllerとして設定してください。ここで最初の Web サービス呼び出しを行い、完了したらアプリケーションの最初の画面に移動します。

サーバー上で一部のデータが変更されたかどうかを知るにはどうすればよいですか?

データのバージョンをサーバーに伝える必要があります。そのため、サーバー側でデータのバージョン番号を設定し、データのダウンロード中にそれを追跡します。そのため、Web サービスを呼び出すときにバージョン番号をサーバーに渡すと、サーバーは利用可能な新しいデータがあるかどうかを判断できます。これにより、既にダウンロードしたデータのダウンロードを回避できます。

その情報をどこに保存しますか?

保存するデータのサイズによって異なります。そしてそのセキュリティ。Sqlite3 のようなデータベースを使用するのは良い選択肢だと思います。

お役に立てれば。

于 2013-01-21T10:35:31.557 に答える
1

AppDelegate のどこにコードを配置する必要がありますか?

データをどこにダウンロードするかは、アプリの動作によって異なります。通常、アプリが新しいビューに移動するたびに最新のデータを表示することになっている場合、そのビューにアクセスしたときにデータをダウンロードする必要があります。そうすれば、常に最新の利用可能なデータをユーザーに表示できます。

通常、アプリケーションにあまり多くを入れないようにします: didFinishLaunchingWithOptions:、特にネットワーク接続は、ユーザーがどのような種類の接続を持っているかわからないためです。接続に時間がかかり、アプリケーションが次のようになる場合: didFinishLaunchingWithOptions: takes too long to return iOS は、開くのに時間がかかりすぎるためにアプリケーションを強制終了します。これは、ユーザー エクスペリエンスにとってまったく良くありません。

サーバー上で一部のデータが変更されたかどうかを知るにはどうすればよいですか?

サーバーからの応答のヘッダーで、最終変更のタイムスタンプまたは etag を渡す必要があります。サーバーからヘッダー応答を取得すると、受信した前回の最終変更データと照合できます。または、etag が異なる場合は、データが変更されていることがわかります。このようにすると、すべての本体をダウンロードして単一のパラメーターをチェックするよりもはるかに高速です。そのパラメーターが変更されていない場合は、大量のデータを無料でダウンロードしたことになります。バージョニングはお勧めしません。バージョニングは、データが古いかどうかをチェックするよりも、API の変更に使用されます。

ストレージの場所?

ダウンロードするデータの量にもよりますが、通常はコア データを使用することをお勧めします。データをファイルに保存してからそのファイルを保存する際の問題は、アプリを開くたびに、そのデータを検索する前に使用可能なものに分解する必要があることです。コア データを使用すると、完全に形成されたオブジェクトが得られます。 NSPredicate を使用して検索できるため、長期的にはすべてを簡単に使用できます。

いくつかの設定をダウンロードするだけの場合は、ファイルや NSUserDefaults のようなものを使用できますが、データのリストまたはコレクションをユーザーに表示する場合は、コア データを使用するのが最善です。

于 2013-01-21T12:09:37.730 に答える
0

サーバー上で一部のデータが変更されたかどうかを知るにはどうすればよいですか?
アプリケーションとサーバーでも可変バージョンを使用します。アプリケーション変数のバージョンを API で送信し、データをダウンロードする前に両方のバージョンを比較します。

AppDelegate のどこにコードを配置する必要がありますか?

要件に応じて applicationDidBecomeActive または didFinishLaunchingWithOptions を使用できます
- (void)applicationDidBecomeActive:(UIApplication *)application

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


データのサイズと要件に応じてその情報を保存する場所 データを保存する場所を決定できます

  1. UserDefaultにデータを保存できます
  2. NSTemporaryDirectory / NSDocumentDirectory / NSLibraryDirectoryファイルとしてデータを保存できます。NSDocumentDirectoryは問題ないと思います。
  3. sqliteまたはCoreDataにデータを保存できます
于 2013-01-21T11:04:57.770 に答える