Riempire UIPickerView da file di testo
Abbiamo visto come riempire le UIPickerView usando sia un NSArray sia usando un NSDictionary.
Abbiamo anche visto che leggere un file di testo.
A questo punto mettiamo tutto insieme: da un file di testo riempiamo l'NSDictionary che viene usato dal nostro UIPickerView.
Il file di testo sarà una cosa del genere:
s.c.c. a r.l.;Società Cooperativa Consortile a responsabilità limitata
S.p.A.;Società per Azioni
N.A.;National Association
Cons. a.e.;Consorzio con attività esterna
Cons.;Consorzio
S.c.r.l.;Società Cooperativa responsabilità limitata
soc. consort. n c.;Società Consortile in nome collettivo
coop. soc.;Cooperativa sociale
p. soc. coop.;Piccola Società Cooperativa
s.r.l. unico socio;Società a responsabilità limitata con unico socio
soc. coop. agricola;Società Cooperativa Agricola
S.p.A. Socio Unico;Società per Azioni con Socio Unico
s.r.l. unipersonale;Società unipersonale a responsabilità limitata
L.L.C.;Limited Liability Company
s.a.s.;Società in accomandita semplice
soc. coop. p.A. r.l.;Società cooperativa per Azioni a responsabilità limitata
Soc. Mutua Ass.;Società di Mutua Assicurazione
Cons. a gar. l.;Consorzio a garanzia limitata
Ente Morale;Ente Morale
GmbH;Geselschaft mit Beschränkter Haftung
In pratica ogni riga la spezziamo al punto e virgola e la parte di sinstra sarà la chiave, mentre quella di stra il valore visto sullo schermo.
Prima di tutto aggiungete il file al progetto.
Poi questo sarà il file .h:
#import <UIKit/UIKit.h>
@interface ControllerAziendaReg : UIViewController {
NSMutableDictionary *dictionaryForma;
NSArray *splitArray;
NSMutableArray *keysForma;
NSMutableArray *objectsForma;
NSString *fileTxt;
NSString *textFromFile;
UIActionSheet *sheetForma;
}@property (retain, nonatomic) IBOutlet UIPickerView *pickerForma;
@end
Il file .m ve lo spezzo in modo da rendere più chiaro il tutto.
Prima di tutto il metodo viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *err = nil;
fileTxt = [[NSBundle mainBundle] pathForResource: @"forma" ofType: @"txt"];
textFromFile = [[NSString alloc] initWithContentsOfFile:fileTxt encoding:NSASCIIStringEncoding error:&err];
splitArray = [textFromFile componentsSeparatedByString:@"\n"];
keysForma = [NSMutableArray array];
objectsForma = [NSMutableArray array];
for(int i = 0; i < [splitArray count]; i++) {
NSString *s = [splitArray objectAtIndex:i];
NSString *pre = [s substringToIndex:[s rangeOfString:@";"].location];
NSString *sub = [s substringFromIndex:[s rangeOfString:@";"].location + 1];
[keysForma addObject:pre];
[objectsForma addObject:sub];
}
dictionaryForma = [NSDictionary dictionaryWithObjects:objectsForma forKeys:keysForma];
}
Prendiamo il file, lo leggiamo e riempiamo l'NSArray splitArray.
Per ogni valore dell'array creaimo una NSString che verrà poi splittata in corrispondenza del punto e virgola.
Poi riempiamo i due NSMutableArray, il primo con i valori di sinitra, il secondo con quelli di destra.
Fuori dal ciclo aggiungiamo gli array come valori dell'NSDictionary.
A questo punto la parte finale, i metodi specifi dell'UIPickerView:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [dictionaryForma objectForKey:[keysForma objectAtIndex:row]];
}- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [keysForma count];
}- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Attenzione" message:[keysForma objectAtIndex:row] delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
}
Più o meno uguale agli articoli precedenti.
objective c uipickerview nsarray nsmutablearray
Commentami!