2010-04-25 3 views
5

J'ai ce code ci-dessous:Lire un fichier texte dans le dossier de documents - SDK iPhone

NSString *fileName = [[NSUserDefaults standardUserDefaults] objectForKey:@"recentDownload"]; 
    NSString *fullPath = [NSBundle pathForResource:fileName ofType:@"txt" inDirectory:[NSHomeDirectory() stringByAppendingString:@"/Documents/"]]; 
    NSError *error = nil; 

    [textViewerDownload setText:[NSString stringWithContentsOfFile:fullPath encoding: NSUTF8StringEncoding error:&error]]; 
  • textviewerdownload est le textview affiche le texte à partir du fichier. Le nom de fichier réel est stocké dans un NSUserDefault appelé recentDownload. Lorsque je compile ceci, je clique sur le button qui est sous, et mon application crashes.

  • Y a-t-il un problème avec la syntaxe ou une simple erreur?

+0

S'il y avait un problème avec la syntaxe, votre code ne compilerait pas; vous n'atteindriez pas l'étape de l'exécuter et de le voir s'écraser. Pour déboguer un crash, utilisez le débogueur; ça devrait te dire comment tu t'es plantée et où. –

Répondre

9

La classe NSBundle est utilisé pour trouver des choses à l'intérieur de votre paquet d'applications, mais le répertoire des documents est en dehors du paquet, donc la façon dont vous générez le chemin ne fonctionnera pas. Essayez ceci:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, 
                YES); 

NSString *fullPath = [[paths lastObject] stringByAppendingPathComponent:@"recentDownload.txt"]; 
+0

Ok, j'ai changé une partie du codage .. Mon application se bloque toujours .. Voici le code sous mon IBAction: http://www.heliotop.org/code.rtf Aussi comment je ferais une déclaration if, où si le fichier récent n'est pas un fichier avec l'extension "txt", il retournera, et si cela était alors une action. – lab12

6
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"myfile.txt"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:myPathDocs]) 
    { 
     NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"txt"]; 
     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     [fileManager copyItemAtPath:myPathInfo toPath:myPathDocs error:NULL]; 
    }  

    //Load from File 
NSString *myString = [[NSString alloc] initWithContentsOfFile:myPathDocs encoding:NSUTF8StringEncoding error:NULL]; 

Cela vous a travaillé pour moi

Quoi qu'il en soit, merci à tous ..

2

Pour lecture/écriture de fichier texte Cocher cette url.

+0

Assurez-vous de mettre le drapeau booléen "UIFileSharingEnabled" à "YES" dans votre info.plist. – msgambel