2009-11-30 7 views
11

J'essaie de créer un fichier texte avec le contenu d'une chaîne sur mon bureau. Je ne sais pas si je le fais bien, je ne reçois pas d'erreurs, mais ça ne marche pas non plus ...Objective-C créer un fichier texte avec une chaîne

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); 
NSString *desktopDirectory=[paths objectAtIndex:0]; 
NSString *filename = [desktopDirectory stringByAppendingString: @"file.txt"]; 
[myString writeToFile:filename atomically:YES encoding: NSUTF8StringEncoding error: NULL]; 

Répondre

13

Vous ne savez pas si vous obtenez des erreurs parce que vous ignorez la valeur YES/NO retournée de la méthode -writeToFile: ... et ne lui donnez aucun pointeur d'erreur dans lequel enregistrer un éventuel échec. Si la méthode renvoie NON, vous vérifiez (et gérez ou présentez) l'erreur pour voir ce qui s'est mal passé. En cas de doute, l'échec est dû au chemin que vous avez construit. Essayez -stringByAppendingPathComponent: au lieu de -stringByAppendingString: ... ceci et ses méthodes liées gèrent correctement les chemins.

Le fichier est probablement en cours de création (il se peut que vous n'ayez pas d'erreurs après tout). Je suppose que le fichier est créé quelque part comme "~/Desktopfile.txt" puisque votre utilisation de -stringByAppendingString: ne considère pas la chaîne comme un chemin séparé par des barres obliques. Vérifiez votre dossier de départ - Je parie que le fichier est là.

39
//Method writes a string to a text file 
-(void) writeToTextFile{ 
    //get the documents directory: 
    NSArray *paths = NSSearchPathForDirectoriesInDomains 
     (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    //make a file name to write the data to using the documents directory: 
    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
                documentsDirectory]; 
    //create content - four lines of text 
    NSString *content = @"One\nTwo\nThree\nFour\nFive"; 
    //save content to the documents directory 
    [content writeToFile:fileName 
        atomically:NO 
          encoding:NSStringEncodingConversionAllowLossy 
            error:nil]; 

} 
+0

Homme parfait ... Merci. –

+0

Cela fonctionne parfaitement – MayorMonty

+0

Merci, mate! Simple et facile à utiliser. – Felipe

-3

le problème est que la chaîne du répertoire de bureau se termine par rien (non /). Vérifiez ceci (sur un iPhone) en utilisant UIAlertview.

+1

Quoi? 1.) Vous n'avez pas besoin d'utiliser '/' si vous le faites comme il l'a fait. 2.) Où voyez-vous un UIAlertView? Je ne. 3.) cette question a été posée il y a presque 2 ans. –

+0

..Also pourquoi devrions-nous vérifier quelque chose à faire avec un "Desktop" sur iOS? iOS n'a pas une telle chose. –