2009-04-14 7 views
1

Je dois stocker certaines informations pendant l'exécution de mon application et la récupérer au moment du démarrage de l'application. J'ai essayé de le stocker en XML en utilisant GData mais je n'ai pas réussi. J'ai utilisé le NSFileHandle il ne me donne pas une erreur, mais il ne parvient pas à créer un fichier. Txt à des fins de lecture/écriture. Y at-il un autre moyen de stocker et de récupérer les données sur l'iPhone. Voici mon code pour NSFileHandle.Stockage persistant iPhone

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"myFile.txt"]; 
[fh seekToEndOfFile]; 
NSData *data = [camName dataUsingEncoding:NSASCIIStringEncoding]; 
[fh writeData:data]; 
[fh closeFile]; 

pour la lecture

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"myFile.txt"]; 
if(fh == nil) 
    return nil; 
else 
{ 
    NSData *data = [fh readDataOfLength:8]; 
    NSString *retStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    return retStr; 
} 

Répondre

10

Vous essayez d'écrire dans le répertoire de ressources dont vous n'avez probablement pas l'autorisation. Essayez de changer la première ligne de votre code pour pointer vers le répertoire document:

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]]; 
[savePath appendString:@"/myFile.txt"]; 

En outre, vous n'avez pas besoin de vous soucier de descripteurs de fichiers. NSData est capable d'écrire sur le disque:

BOOL result = [data writeToFile:savePath atomically:YES]; 
3

application iPhone Chaque a à sa disposition la capacité de lecture/écriture des paires nom/valeur qui peut être très, très utile pour le stockage petites informations comme les préférences de l'utilisateur. Ces préférences peuvent également être éditées par l'utilisateur de votre application (si vous le souhaitez). Une autre option que vous avez qui est plus robuste que d'essayer de faire du stockage et de la récupération de fichiers texte (je n'ai jamais aimé cette option, en particulier avec le support de l'analyse XML merdique sur l'iPhone) est sqlite. sqlite est un moteur de base de données relationnelle très léger qui est inclus avec chaque iPhone et iPod touch.