title: Can not change/replace NSDictionary Key value IOS
body: <p>I am downloading a file revision status from Dropbox and basically I compare downloaded revison number in Dropbox with revision number in my local plist. </p>
  
  <p>After comparing them I want to change local revision number with Dropbox's revision number. But it is not working I am about to loss my mind.</p>
  
  <p>I put some flags and NSlogs it seems it replace the value but after I call same function or launch the app again I see that value is not replaced. It gives the same output over and over again</p>
  
  <pre><code>    NSString* revisionLocal = [dicInner objectForKey:@"revision"];
      NSString* statusLocal = [dicInner objectForKey:@"status"];
  
      NSLog(@"revision  value before %@",revisionLocal);
      NSLog(@"status value before %@",statusLocal);
  
     //If revision has changed on dropbox, flag it as outdated on the local revision
                          if(![revisionLocal isEqualToString: dropBoxRevision] ){
                              [dicInner setValue:@"outdated" forKey:@"status"];
                              //But the revision is the latest
                              [dicInner setValue:dropBoxRevision forKey:@"revision"];
                              //[dicInner setValue:@"outdated" forKey:@"revision"];
  
                              NSLog(@"revision value %@",[dicInner objectForKey:@"revision"]);
                              NSLog(@"status value %@",[dicInner objectForKey:@"status"]);
  </code></pre>
  
  <p>so this give me the output of:</p>
  
  <pre><code>revision  value before 4309efbbb7
  status value before updated
  revision value 4409efbbb7
  status value outdated
  </code></pre>
  
  <p>And the full code is:</p>
  
  <pre><code>- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
  
      //get the local revision
      NSDictionary * localRevisionDic = [FileUtils readPlistIntoDictionary:@"revision.plist"];
  
      NSString *fileRevString = [NSString alloc];
      //get the revision from Dropbox
      //NSString * dropboxRevision;
      if (metadata.isDirectory) { 
          NSLog(@"Folder '%@' contains:", metadata.path);
          for (DBMetadata *file in metadata.contents) {
  
              NSLog(@"\t%@", file.filename);
              //NSLog(@"\t%@", file.lastModifiedDate);
              NSLog(@"\t%@", file.rev ); 
  
              //Assign dropbox revision for this file
              //dropboxRevision = file.rev;
              //if no local revision.plist, entry will be added. Hence init here
              if (localRevisionDic==nil){
                  localRevisionDic = [[NSMutableDictionary alloc]init];
  
              }
              //Otherwise go through each from dropbox and campare with local
  
              //From Dropbox
              NSString * dropBoxFileName = file.filename;
              NSString * dropBoxRevision = file.rev;
  
              fileRevString = file.rev;
  
              //if no local revision.plist entry is added for all other files
              //with status need_downloaded, and no revision
              if ([localRevisionDic count]==0){
  
                  //Creating revision dictionary entry for agenda.plist
                  NSDictionary * localRevisionDicDic = [[NSMutableDictionary alloc]init];
                  //when agenda.plist revision entry is added update the revision while leaving status as "new" before downloading
                  //will be updated accordingly if download fails
                  [localRevisionDicDic setValue:@"new" forKey:@"status"];
                  //Status is new but the revision is the latest
                  [localRevisionDicDic setValue:dropBoxRevision forKey:@"revision"];
  
                  [localRevisionDic setValue:localRevisionDicDic forKey:dropBoxFileName];
  
              }else{//If there is local revision.plist compare and update accordingly
                  NSDictionary * dicInner = [localRevisionDic objectForKey:dropBoxFileName];
                  //File name Found locally
                  if (dicInner!=nil){
                      NSString* revisionLocal = [dicInner objectForKey:@"revision"];
                      NSString* statusLocal = [dicInner objectForKey:@"status"];
  
                      NSLog(@"revision  value before %@",revisionLocal);
                      NSLog(@"status value before %@",statusLocal);
  
                      //If revision has changed on dropbox, flag it as outdated on the local revision
                      if(![revisionLocal isEqualToString: dropBoxRevision] ){
                          [dicInner setValue:@"outdated" forKey:@"status"];
                          //But the revision is the latest
                          [dicInner setValue:dropBoxRevision forKey:@"revision"];
                          //[dicInner setValue:@"outdated" forKey:@"revision"];
  
                          NSLog(@"revision value %@",[dicInner objectForKey:@"revision"]);
                          NSLog(@"status value %@",[dicInner objectForKey:@"status"]);
                      }
                      }else{//File name not found locally newly added on dropbox
  
                          NSDictionary * localRevisionDicDic = [[NSMutableDictionary alloc]init];
                          //when agenda.plist revision entry is added update the revision while leaving status as "new" before downloading
                          //will be updated accordingly if download fails
                          [localRevisionDicDic setValue:@"new" forKey:@"status"];
                          //But the revision is the latest
                          [localRevisionDicDic setValue:dropBoxRevision forKey:@"revision"];
  
                          [localRevisionDic setValue:localRevisionDicDic forKey:dropBoxFileName];
                  }
              }
          }
      }
      //At this point agendaRevisionDicTemp contains all the files in dropbox entered/updated.
      [[self agenda] setRevision:localRevisionDic];
  
      //*****The following block is needed to determine is new agenda is needed or not.
      BOOL newAgendaNeeded = false;
  
      NSMutableDictionary * agendaRevisionDicLocal = [localRevisionDic objectForKey:@"agenda.plist"];
  
      //NSString * localRevision = [agendaRevisionDicLocal objectForKey:@"revision"]; //what is this value?
  
      NSString * localStatus = [agendaRevisionDicLocal objectForKey:@"status"];
      NSLog(@"Local Status= %@",agendaRevisionDicLocal);
  
  
      if ([localStatus isEqualToString:@"new"] ||[localStatus isEqualToString:@"outdated"]){
          newAgendaNeeded = true;
          //when agenda.plist is added update the revision while leaving status as "new" before downloading
          //will be updated accordingly if download fails
          NSDictionary * agendaDic = [[[self agenda]revision] objectForKey:@"agenda.plist"];
          [agendaDic setValue:@"updated" forKey:@"status"];
          NSLog(@"agendaDic where update %@",agendaDic);
  
      }
      //*****The above block is needed to determine is new agenda is needed or not.
  
      //If new agenda is needed download
      if (newAgendaNeeded){
          //Download agenda.plist
          NSString *documentsDirectory = FileUtils.getDocumentsDirectory;
          [[self restClient] loadFile:@"/agenda.plist" intoPath: [ NSString stringWithFormat:@"%@/%@",documentsDirectory,@"agenda.plist"] ];
  
      } else{//Else display the scene
  
          [self populateSceneFromAgenda];
  
      }
  
      [restOfView reloadData];
      // Add at start of requestFinished AND requestFailed
      [MBProgressHUD hideHUDForView:self.view animated:YES];
  }
  </code></pre>
  
  <p>Any Idea How Can I replace that value? </p>