paridee Inviato 22 Aprile 2011 Segnala Condividi Inviato 22 Aprile 2011 ciao a tutti, sono un newbie assoluto per quanto riguarda programmazione objective c ma è tutto il giorno che sto impazzendo per salvare e rileggere delle impostazioni da un file plist ho letto i tutorial della apple e penso di aver capito che nel plist ci posso mettere solo oggetti di un certo tipo (NSString, NSNumber...) incapsulati in certe strutture dati (NSArray, NSDictionary...) peccato che con questo codice NSString * error; NSString * rootpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSLog(@"pippo"); NSString * plistpath = [rootpath stringByAppendingPathComponent:@"stato.plist"]; NSArray * valori = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],nil]; NSArray * chiavi = [NSArray arrayWithObjects:@"prova",nil]; NSDictionary * plistdict = [NSDictionary dictionaryWithObject:valori forKey:chiavi]; NSLog([plistdict description]); NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistdict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; if(plistData){ [plistData writeToFile:plistpath atomically:YES]; } else{ NSLog(error); [error release]; } ottengo questo bell'output 2011-04-22 12:42:08.669 ContaFrutti[4087:207] { ( prova ) = ( 1 ); } 2011-04-22 12:42:08.675 ContaFrutti[4087:207] Property list invalid for format vi prego aiutatemi! Link al commento Condividi su altri siti Altre opzioni di condivisione...
ignazioc Inviato 25 Aprile 2011 Segnala Condividi Inviato 25 Aprile 2011 non so dove tu abbia trovato quel codice ma è assurdamente complesso. il codice corretto è questo. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString * plistpath = [documentsDirectory stringByAppendingPathComponent:@"stato.plist"]; NSArray *array = [NSArray arrayWithObjects:@"prova", nil]; NSLog([array description]); [array writeToFile:plistpath atomically:YES]; NSArray *array2 = [NSArray arrayWithContentsOfFile:plistpath]; NSLog([array2 description]); se devi usare un intero come chiave non ha senso usare i dictionary. in ogni caso qui c'è il codice per l'nsdictionary. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString * plistpath = [documentsDirectory stringByAppendingPathComponent:@"stato.plist"]; //NSArray *array = [NSArray arrayWithObjects:@"prova", nil]; NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"value1", nil] forKeys:[NSArray arrayWithObjects:@"chiave1", nil]]; NSLog([dict1 description]); [dict1 writeToFile:plistpath atomically:YES]; NSArray *dict2 = [NSDictionary dictionaryWithContentsOfFile:plistpath]; NSLog([dict2 description]); Problemi a programmare il tuo iphone? contattami Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.