2016-12-28 13 views
0

私はアプリが何度も変更されたかどうかを確認するためにUserDefaultを数えてチェックしようとしています。デフォルトの場合、viewDidLoadが20になってから15分になると、ViewControllerに正しい番号が表示されます。ここではデフォルトを読むための私のコードです。継続的にチェックして、ユーザーデフォルトの整数をリフレッシュする

import UIKit 

let Ironcnt = UserDefaults.standard 
let Goldcnt = UserDefaults.standard 
let Fiveth = UserDefaults.standard 

let shipcnt = UserDefaults.standard 
let empirecnt = UserDefaults.standard 

var fiveth = Int() 
var iron = Int() 
var gold = Int() 
var ships = Int() 
var empires = Int() 

class twenty: UIViewController { 
    @IBOutlet weak var fiveth1: UILabel! 
    @IBOutlet weak var iron1: UILabel! 
    @IBOutlet weak var gold1: UILabel! 
    @IBOutlet weak var ships1: UILabel! 
    @IBOutlet weak var empire1: UILabel! 

@IBOutlet weak var webViewBG: UIWebView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let htmlPath = Bundle.main.path(forResource: "WebViewContent", ofType: "html") 
    let htmlURL = URL(fileURLWithPath: htmlPath!) 
    let html = try? Data(contentsOf: htmlURL) 

    self.webViewBG.load(html!, mimeType: "text/html", textEncodingName: "UTF-8", baseURL: htmlURL.deletingLastPathComponent()) 

    if (Fiveth.value(forKey: "Fiveth") != nil){ 
     fiveth = Fiveth.value(forKey: "Fiveth") as! NSInteger! 
     fiveth1.text = NSString(format: "Fiveth: %i", fiveth) as String 
    } 
    if (Ironcnt.value(forKey: "Ironcnt") != nil){ 
     iron = Ironcnt.value(forKey: "Ironcnt") as! NSInteger! 
     iron1.text = NSString(format: "Iron: %i", iron) as String 
    } 
    if (Goldcnt.value(forKey: "Goldcnt") != nil){ 
     gold = Goldcnt.value(forKey: "Goldcnt") as! NSInteger! 
     gold1.text = NSString(format: "Gold: %i", gold) as String 
    } 
} 
+1

あなたのUserDefaultを見ることができません。そしてあなたが直面している問題を説明してください。 –

+0

あなたのコードでは、NSUserDefaultを持っていない部分はありませんか? – Tj3n

+0

@DheerajDコードを更新しました。読み込みコマンドが呼び出されたとき、コードは一度だけ実行されます。私はuserdefaultを表示するラベルを持っていますが、デフォルト値が増減しているときにviewcontrollerでラベルが正しい整数を表示したい場合 –

答えて

1

リファクタリングこれらのすべて、あなたは非常に多くの参照を作成する必要がいけない:それはuserdefaultとラベルの両方を更新します

var fiveth: Int { 
    set { 
     fiveth1.text = newValue 
     UserDefaults.standard.set(newValue, forKey: "fiveth") 
    } 

    get { 
     return UserDefaults.standard.integer(forKey: "fiveth") 
    } 
} 

をこのようSTHする

let Ironcnt = UserDefaults.standard 
let Goldcnt = UserDefaults.standard 
let Fiveth = UserDefaults.standard 

let shipcnt = UserDefaults.standard 
let empirecnt = UserDefaults.standard 

var fiveth = Int() 
var iron = Int() 
var gold = Int() 
var ships = Int() 
var empires = Int() 

をあなたがintを変更したとき

関連する問題