2017-08-12 16 views
0

私の主な見解では、2つのビューからデータを収集しています。メインビューから開始し、次のビューに移動してデータを取得し、元のビューに戻ります。私は最後のビューに行き、より多くのデータを取得しますが、私が元に戻ったときに元のデータはなくなりました。それを保存するにはどうすればいいですか?ビューを終了するときに変数を保存する方法

viewWillDisappearを使用しようとしましたが、機能しませんでした。これは良いアプローチですか、もしそうなら、私はそれをどうやって使うのですか?

これら

はセグエを経由して入ってくるデータの2つの部分である:

var homeTeamName = String() 
var awayTeamName = String() 

私はロード時にこれを行う:廃止

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. } 
    HomeName.text = homeTeamName 
    HomeImage.image = UIImage(named:homeTeamName) 
    AwayName.text = awayTeamName 
    AwayImage.image = UIImage(named:awayTeamName) 

} 

Note:すべて1つのビューから来て、そしてすべてのものを持ちます家は別の家から来ている。

は今、私はこのように保存しています:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib.  
    UserDefaults.standard.string(forKey: "homeTeamName") 
} 

がまだ機能していない:

override func viewWillDisappear(_ animated: Bool) { 
    UserDefaults.standard.set("value", forKey: "homeTeamName") 
} 

は次のように取得します。

ありがとうございます!

+0

デリゲートパターンを試しましたか? –

+0

あなたは私の以前のansを確認することができます同じのためのappdelegateを使用することができますhttps://stackoverflow.com/questions/45407423/sharing-data-between-multiple-view-controllers-without-segue-swift-3/45408261#45408261 。 – luckyShubhra

+0

この問題を修正しましたか? –

答えて

0

変数を残すときに、変数をViewControllerクラスに格納することはできません。おそらくすべてが破壊されるでしょう。 2つの文字列を保存する必要があるため、UserDefaultsを使用するのが最善の方法です。

print("printingValue\(UserDefaults.standard.string(forKey: "homeTeamName"))") 

印刷ログのためにこれを使用し

​​

を取得

UserDefaults.standard.set("value", forKey: "homeTeamName") 

を保存

はそれが役に立てば幸い!

+0

どのような時点でこれらのコード行を実行しますか? viewWillDisappearに格納して、読み込んだときに取得しますか?また、私は保存したい文字列を最大20個も持っています。私はまだ同じ方法を使うべきですか? –

+0

はい、viewWillDisappearに格納し、viewDidLoadで取得する必要があります。さらに、多くの文字列をUserDefaultsに格納することができます。この目的のために、またはあなたが望む方法で別のクラスを作ることができます –

+0

編集されたオリジナル投稿。私はあなたが何を意味するのか? –

-1

ちょっと私はそれをuに役立つと思います。この

override func viewWillAppear(_ animated: Bool) { 
    let userDefault = UserDefaults.standard 
    userDefault.value(forKey: "homeTeamName") 
} 

を書く

override func viewWillDisappear(_ animated: Bool) { 
    let userDefault = UserDefaults.standard 
    userDefault.set("value", forKey: "homeTeamName") 
} 

データ格納のためにこれを書いて、データRetrivingのためにこれを書きます。

+0

何が標準ですか? –

+0

データを保存するプリファレンス辞書であり、アプリケーションをアンインストールすると削除されます。 Userdefaults.standardは設定辞書です。 userdefaultはobjectです。そのコードをviewwilldisappearに書き込み、viewwillappear –

+0

私は自分の問題を発見したと思う。私はviewWillAppearで取得するとき、私はこれを行う必要があります:homeTeamName = userDefault.value(forKey: "homeTeamName") –