i'm trying store array of numbers in nsuserdatastorage..what doing wrong? thanks. import uikit
class viewcontroller: uiviewcontroller { var arr = [int]() var timer = nstimer() var countdowntimer = nstimer() var count = 0 var countdown = int(arc4random_uniform(4000) + 1000) var highscore:int! @iboutlet weak var beginbutton: uibutton! @iboutlet weak var startbutton: uilabel! @iboutlet weak var highscorebutton: uilabel! @iboutlet weak var timerlabel: uilabel! @iboutlet weak var backgroundimage: uiimageview! func updatetime() { countdown = countdown - 1 if countdown <= 0 { startbutton.textcolor = uicolor.blackcolor() startbutton.text = "tap now!" countdowntimer.invalidate() backgroundimage.image = uiimage(named: "red") count = 0 timer() } } func timer() { timer = nstimer.scheduledtimerwithtimeinterval(0.001, target:self, selector:selector("reflextest"), userinfo:nil, repeats: true) } func reflextest() { count = count + 1 timerlabel.text = "\(count) ms" } @ibaction func begintapped(sender: anyobject) { if startbutton.text == "tap when color changes" { startbutton.text = "you tapped early!" countdowntimer.invalidate() countdown = int(arc4random_uniform(4000) + 1000) } else { if count == 0 { countdowntimer = nstimer.scheduledtimerwithtimeinterval(0.001, target: self, selector: selector("updatetime"), userinfo: nil, repeats: true) startbutton.text = "tap when color changes" countdown = int(arc4random_uniform(4000) + 1000) timerlabel.text = "\(count) ms" } else { timer.invalidate() backgroundimage.image = uiimage(named: "green") startbutton.text = "tap begin" arr.append(count) count = 0 highscore = minelement(arr) highscorebutton.text = "best: \(highscore)" self.viewdidload() } } } override func viewdidload() { super.viewdidload() nsuserdefaults.standarduserdefaults().setobject(arr, forkey: "data") arr = nsuserdefaults.standarduserdefaults().objectforkey("data") as! [int] println(arr) // additional setup after loading view, typically nib. } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } }
im trying make when view loaded, takes data permanent storage, sets array equal it, , user plays game, when clicks end button, takes data, , stores in array, , takes permanent storage. how may without using core data?
you've got idea nsuserdefaults—just read , write needed. abstract away methods (or separate objects) have intuitive interface save , load.
if data gets more complex, may want writing data file on device nskeyedarchiver , nscoding in order serialize , deserialize easily.
see nshipster article more info on that.
class viewcontroller: uiviewcontroller { var arr = [int]() let kdefaultskey = "com.mycompany.myapp.numbers" override func viewdidload() { super.viewdidload() self.loaddefaults() } func randomnumner() -> int { return int(arc4random() % 100) } @ibaction func buttontapped(sender: anyobject) { arr.append( randomnumber() ) self.savedfeaults() } func loaddefaults() { if let savedarray = nsuserdefaults.standarduserdefaults().objectforkey( kdefaultskey ) as? [int] { self.arr = savedarray } } func savedfeaults() { nsuserdefaults.standarduserdefaults().setobject( self.arr, forkey: kdefaultskey ) } }
Comments
Post a Comment