1

私は迅速かつアプリ開発の初心者です。シンプルなアプリケーションのためにデータを整理する方法については質問があります。即時にビューコントローラ間で共有されるデータを整理する方法

私はオブジェクトに対して定義されたデータモデルChoiceを持っています。

このアプリには複数のView Controllerがあります。これらのうちの2つは選択肢の配列にアクセス/変更します。他は、この配列から単一の選択肢にアクセスして変更します。したがって、彼らはすべてこの1つのデータセットからさまざまな程度まで作業します。

今、これらのビューコントローラの1つ(テーブルビュー)は、データを「所有」して保存します。残りのビューコントローラは、前後にデータを渡すだけです。少し狂っています。

私がしたいことは、彼らがすべてアクセスしている1つのデータソースを持つことです。しかし、私はAppDelegateでグローバルを使用したくありません。

私の現在の考えは、これらすべてのView Controllerが継承する親クラスを作成することです。このクラスは、データとすべてのデータ処理関数を所有します。

この一般的な組織は機能しており、ベストプラクティスと一致していますか?この問題を解決するには他にも良い方法がありますか?あなたが持っているアドバイスは非常に高く評価されます。ありがとう!

答えて

1

ここでは、ベースビューコントローラを使用した場合のアプローチは適していません。また、データを複製するなどの問題が発生し、非表示の他の場所でデータにアクセスする可能性もありますコントローラ。

モデル(データ)オブジェクトへの制御されたアクセスを可能にするモデルレイヤーが必要です。たとえば、ChoiceManagerというモデルクラスを考えて、それをSingletonにすることができます。

ChoiceManager.sharedInstance.choices 
+0

それはいくつかの利点は、このようにそれをやっているを確認します。

class ChoiceManager{ //The singleton instance static let sharedInstance = ChoiceManager() var choices : [Choices] = [] //Logic to create Choice objects - may be parsing from a JSON, or from a network etc } 

は今、プロジェクト全体で、あなただけの

ChoiceManager.sharedInstance 

を言っても選択肢にアクセスすることで、同じChoiceManagerにアクセスすることができますしかし、AppDelegateでグローバルオブジェクトを使用することは、ほぼ同じことをします。 AppDelegateが利用可能なときに、なぜ1つのインスタンスのデータを保持するために別のクラスを作成する必要があるのか​​、私は決して理解しませんでした。 – glace

+0

@Shripada:ありがとう!それは理にかなっている。私はこのアプローチを試みます。あなたは私に多くのリストラを救った! :) – user480029

関連する問題