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
Post a Comment