0

ユーザーが自分のプロファイルに関するさまざまな設定を保存できるようにする、私が取り組んでいる Swift アプリケーションがあります。私のコード全体を通して、アプリケーションのビジネス ロジックにとって、これらの設定/設定を知ることが重要な場合があります。それらの 1 つは、ユーザーが作業する場所です (ジョブ (主キーとして ID を持つ sqllite データベースの行))。ユーザーは、アプリ内でいつでも 1 つ (そして 1 つだけ) を選択できます。プロファイルのようなものだと考えてください - 彼らは多くの仕事をすることができますが、選択できるのは 1 つだけです。

以下は、workplaceid プロファイルを知ることが重要なシナリオです。

  1. 私のsqlliteデータベースでは、現在選択されている作業IDに基づいて作業/シフト情報を取得しています(データベースからのIDではなく、現在選択されているID)。これをクエリに渡します。
  2. NSDate 拡張関数では、開始日について何かを判断するときに、現在選択されているプロファイルを取得し、それを計算に使用する必要があります。
  3. 特定のフィールドを表示/非表示にしたいときに、特定のビューモデル内で。
  4. アラート ビューで、現在の職場に関連するものを表示します。

これを行う手っ取り早い方法は、ユーティリティ クラスで nsuserdefaults のラッパー クラスを作成することだと思います。確かに、すべての情報は sqllite に保存されていますが、現在選択されているアプリの設定は nsuserdefaults に保存されています。これは、ロギング/エラー処理などの他の分野横断的な懸念と並行しており、すべての作業に同様のユーティリティ クラスを使用できます。

アプリケーションのすべての単一レイヤーからこのヘルパー/ユーティリティ クラスを呼び出す可能性があるという事実は、実行しない典型的な危険信号のように思えます。ロギングであるか、情報を取得するためのユーザー サービスであるか。

このようなシナリオで他の人が何をしているのか知りたいです。アプリ全体から nsuserdefaults が必要な場合、「ユーティリティ クラスを作成して、必要な場所で呼び出すだけです」という答えはありますか? それとも、適切に設計された iOS アプリで他の人が従ったベスト プラクティスはありますか? AOP は人々が推奨する傾向があるものであることは知っています。それはiOSに場所がありますか?

どうもありがとうスタックオーバーフロー:)

4

1 に答える 1

1

ユーザーは、アプリ内で一度に 1 つ (かつ 1 つのみ) を選択できます。

これは、シングルトン クラスを作成する必要があることを示しています。プロファイルを変更するたびに、シングルトン クラスをヒットして設定します。そのクラスは、必要なものを取得/設定するためのすべてのロジックとアクセサー関数をカプセル化します。これは、私が長年 ObjC コードで行ってきたことであり、非常に役立っています。デバッグは非常に簡単で、コードの残りの部分はプロファイル管理について何も知る必要はありません (プロファイルを選択する UI 部分でない限り)。

于 2014-08-09T14:10:31.453 に答える