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

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -