Leggere il file Info.plist di un app per iPhone

cocos2d, iPad, iPhone Soft! Commenta l'articolo


Molto spesso accade di dover riscrivere le stesse informazioni più volte, perchè non si vuole pensare ad soluzione definitiva, ma piuttosto si preferisce lavorare con metodi semplici e ripetitivi.

Un esempio è dover scrivere la versione di una applicazione in più punti nel codice.

Un modo semplice e indolore è quello di leggere il suo valore in un punto solamente, come può essere dal file Info.plist.

Per fare questo basta copiare questo pezzo di codice:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
		NSDictionary* plistDictionary = [[NSDictionary alloc] initWithContentsOfFile:filePath];
		NSString *value =  [plistDictionary objectForKey:@"CFBundleVersion"];

La variabile value contiene la versione della nostra applicazione e può essere utilizzata ovunque.

Fornisco anche una serie di metodi da utilizzare per qualsiasi file plist, in lettura e scrittura:

- (id)readPlist:(NSString *)fileName {
   NSData *plistData;
   NSString *error;
   NSPropertyListFormat format;
   id plist;

   NSString *localizedPath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
   plistData = [NSData dataWithContentsOfFile:localizedPath]; 

   plist = [NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];
   if (!plist) {
      NSLog(@"Error reading plist from file '%s', error = '%s'", [localizedPath UTF8String], [error UTF8String]);
      [error release];
   }

   return plist;
}
- (NSArray *)getArray:(NSString *)fileName {
   return (NSArray *)[self readPlist:fileName];
} 

- (NSDictionary *)getDictionary:(NSString *)fileName {
   return (NSDictionary *)[self readPlist:fileName];
}

- (void)writePlist:(id)plist fileName:(NSString *)fileName {
   NSData *xmlData;
   NSString *error; 

   NSString *localizedPath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
   xmlData = [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
   if (xmlData) {
      [xmlData writeToFile:localizedPath atomically:YES];
   } else {
      NSLog(@"Error writing plist to file '%s', error = '%s'", [localizedPath UTF8String], [error UTF8String]);
      [error release];
   }
}


Buon divertimento.

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi