iphone - plist segment control save issue -
i have issue peice of code, trying save data plist later use, , if user reopens view, should have current segment selected each segment control on view.
however when try , save information, crashes on line
[array addobject:gender];
please :) gives exc_bad_access
-(ibaction)genderselection:(id)sender { if([sender selectedsegmentindex] == kswitchessegmentindex) { gender = @"male"; //nslog(gender); } else { gender = @"female"; //nslog(gender); } } -(ibaction)contacttypeselection:(id)sender { if([sender selectedsegmentindex] == kswitchessegmentindex) { contacttype = @"a"; //nslog(gender); } else { contacttype = @"b"; //nslog(gender); } } -(ibaction)savedata:(id)sender { nsmutablearray *array = [[nsmutablearray alloc] init]; [array removeallobjects]; [array addobject:field1.text]; [array addobject:field2.text]; [array addobject:gender]; [array addobject:contacttype]; [array writetofile:[self datafilepath] atomically:yes]; [array release]; } -(nsstring *)datafilepath { nsarray *path = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes); nsstring *documentsdirectory = [path objectatindex:0]; return [documentsdirectory stringbyappendingpathcomponent:kfilename]; } -(void)viewwillappear:(bool)animated { nsstring *filepath = [self datafilepath]; if([[nsfilemanager defaultmanager] fileexistsatpath:filepath]) { nsarray *array = [[nsarray alloc] initwithcontentsoffile:filepath]; field1.text = [array objectatindex:0]; field2.text = [array objectatindex:1]; gender = [array objectatindex:2]; contacttype = [array objectatindex:3]; if([gender isequaltostring:@"male"]) { gendersegment.selectedsegmentindex = 0; } else { gendersegment.selectedsegmentindex = 1; } if([contacttype isequaltostring:@"a"]) { } else { } [array release]; } } -(ibaction)textdone:(id)sender { [sender resignfirstresponder]; } - (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil { self = [super initwithnibname:nibnameornil bundle:nibbundleornil]; if (self) { // custom initialization } return self; } - (void)dealloc { [gender release]; //need release [contacttype release]; //need release [field1 release]; //need release [field2 release]; //need release [super dealloc]; } - (void)didreceivememorywarning { // releases view if doesn't have superview. [super didreceivememorywarning]; // release cached data, images, etc aren't in use. } #pragma mark - view lifecycle - (void)viewdidload { gender = @"male"; contacttype = @"a"; [super viewdidload]; // additional setup after loading view nib. } - (void)viewdidunload { gender = nil; //need release contacttype = nil; //need release field1 = nil ; //need release field2 = nil; //need release [super viewdidunload]; // release retained subviews of main view. // e.g. self.myoutlet = nil; }
you didn't didn't initialize gender
property. need:
- (void)viewdidload { [super viewdidload]; self.gender=[[nsstring alloc]init]; self.gender = @"male"; //so here // additional setup after loading view nib. }
note: if use @synthesize
compiler directive need self-dot notation everywhere refer property e.g. self.gender
.
Comments
Post a Comment