2016-12-22 4 views
0

私は可能な限りシナリオを説明しようとします。モデルのデータにアクセスするにはどうすればよいのですか? viewControllerDでモデルのインスタンスを作成すると、データなしで新しいインスタンスが作成されます。SwiftのmultipleviewControllerのデータにアクセスするには?

以下のコードはシナリオを説明しています。

ViewControllerA

userdetailsの=のUserDetails(JSON!:self.userDetailsList)してみましょう:NSObjectの{

userdetailsarray.append(userdetails)はグローバル配列

//モデル クラスUserDetailsを//

var name : String? 
var profession : String? 
var id: String? 
init(json: NSDictionary) { 

    let name = json["name"] as? String 
    let profession = json["profession"] as? String 
    let id = json["id"] as? String 

    self.name = name 
    self.profession = profession 
    self.id = id 
    super.init() 
} 

} 解決策わかりました:グローバル変数の作成

するvar userdetailsarray = [UserDetails]

この配列にUserDetails(モデル)を追加し、複数viewControllers横切ってこの配列を使用して。別の解決策は、モデルクラスがシングルトンであることです。 私はより楽観的な解決策を探しています。ありがとう

+0

私はこの質問が多くの異なる方法で返答できると思います...私は依存性注入を好むでしょうが、他にもたくさんの方法があります。 –

+0

@Luca D'Alberti依存性注入を使用してこれをどのように達成できるかを知ることは役に立ちます。 – Rio

+0

ViewControllerDを初期化するか、ユーザーに沿って渡すか... – SeanLintern88

答えて

0

データがさらに暗号化されている場合は、NSKeyedArchieverを使用して暗号化し、ユーザーのデフォルト値で保存します。データが必要なときはいつでも、ユーザーのデフォルトからフェッチし、NSKyedUnarchieverを使用してアーカイブを解除することができます。

注:これは、データを永続化する場合にのみ最適なソリューションです。

+0

さらに一般的なケースの解決策は、「中央集中型アクセスポイントを介して、アプリケーションのどの部分からでもアクセスできる方法でデータを保持する」ことです。その永続化メカニズムがNSKeyedArchiver、CoreData、生のSQLite、ユーザーデフォルト、テキストファイル、またはサーバー呼び出しのいずれであっても、呼び出し元とは関係ありません。データが比較的小さく、アプリ呼び出しを超えて持続する必要がない場合もあります。この場合、インメモリストアで十分です。 – Palpatim

関連する問題