objective c - How can I continue my count from the correct spot once I load the saved count? -


i new @ coding, , practicing , making simple tally/counter app. trying save , load number users can continue left off once close app.

the save , load buttons work actually...except once load saved number, , press +1 or -1 buttons, starts 0 if fresh load of app without saved data.

how can make when user loads saved number, +1 , -1 buttons can read loaded number?

this +1 button..haven't changed it:

-(ibaction)up:(id)sender; {       number = number + 1;     count.text = [nsstring stringwithformat:@"%i", number];  } 

these save , load buttons:

-(ibaction)save {      nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];     [defaults setobject:@(self.number) forkey:@"number"];     [defaults synchronize]; } -(ibaction)load {       nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];     [defaults setobject:@(self.number) forkey:@"number"];     self.number = [[defaults objectforkey:@"number"] integervalue];  } 

here part @ bottom :

    - (void)setnumber:(nsinteger)number {         _number = number;         self.label.text = [nsstring stringwithformat:@"%i", _number];         // part giving warning says "writable atomic property 'number' cannot         // pair synthesized getter user defined setter     } 

and here .h

int number;   @interface viewcontroller : uiviewcontroller   {     iboutlet uiswitch *theswitch;     iboutlet uilabel *count;   }  -(ibaction)up:(id)sender; -(ibaction)down:(id)sender; -(ibaction)reset:(id)sender;  -(ibaction) save; -(ibaction) load;  @property nsinteger number;  @property (assign) uilabel *label;   @end 

i feel simple fix.. help?!

first of all, start variable names lower case letter.

is count uilabel? setting text, never updating actual number. instead of saving nsstring, save nsnumber instead:

[defaults setobject:@(self.number) forkey:@"number"] 

make number property:

@property nsinteger number; 

you can write custom setter number property

- (void)setnumber:(nsinteger)number {     _number = number;     self.label.text = [nsstring stringwithformat:@"%l", _number];     // label should propery } 

when load, set number that:

self.number = [[defaults objectforkey:@"number"] integervalue] 

about updated question:

the warning see because property atomic , custom setter implementing nonatomic. property declaration should @property (nonatomic) nsinteger number; (what means outside scope of question).

you never using property. rid of int number; , replace occurrences of number self.number. way, using custom setter property.

the method button should this:

-(ibaction)up:(id)sender; {     self.number = self.number+1; } 

updating label handled in setter number.

also remove [defaults setobject:@(self.number) forkey:@"number"]; load:

-(ibaction)load {     nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];     self.number = [[defaults objectforkey:@"number"] integervalue]; } 

Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -