writeToFile n'est pas écrit dans le fichier
Eh bien, je suis confronté à un problème et j'ai eu du mal avec elle pour quelques jours. Ici, c'est: quand j'essaie d'écrire dans un fichier xml (placé dans le projet xcode qui je suis en développement) à l'aide de writeToFile, l'écriture ne fonctionne pas et je ne vois rien dans le fichier xml bien que la valeur booléenne qui est retourné à partir de writeToFile est évalué à true !! En outre, le fichier d'octets à zéro. Donc, je voudrais vraiment l'apprécier si quelqu'un peut m'aider avec ça. Ci-dessous est une partie du code que j'ai écrit:
//writing to a file
NSString *pathOfFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"];
NSString *dummyString = @"Hello World!!\n";
NSFileManager *filemanager;
filemanager = [NSFileManager defaultManager];
//entering the first condition so I assured that the file do exists
if ([filemanager fileExistsAtPath:pathOfFile] == YES)
NSLog (@"File do exist !!!");
else
NSLog (@"File not found !!!");
BOOL writingStatus = [dummyString writeToFile:path atomically:YES encoding:NSUnicodeStringEncoding error:nil];
//Not entering this condition so I am assuming that writing process is successful but when I open the file I can't find the string hello world and file size shows 0 bytes
if(!writingStatus)
{
NSLog(@"Error: Could not write to the file");
}
J'ai aussi essayé cette solution, mais malheureusement, il ne fonctionne pas trop.
NSString *hello_world = @"Hello World!!\n";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *directory = [paths objectAtIndex:0];
NSString *fileName = @"sample.xml";
NSString *filePath = [directory stringByAppendingPathComponent:fileName];
NSLog(@"%@",filePath);
BOOL sucess = [hello_world writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
if(!sucess)
{
NSLog(@"Could not to write to the file");
}
Nous parlons de iOS ou mac os X ici? Veuillez marquer votre question pour indiquer que.
OriginalL'auteur User897 | 2011-10-03
Vous devez vous connecter pour publier un commentaire.
Dans le premier morceau de code, nous ne pouvons pas voir la définition de
path
. Si c'est une faute de frappe et que vous vouliez direfile_path
, le problème est quefile_path
points d'un chemin à l'intérieur de l'app bundle. Vous ne pouvez pas écrire à l'intérieur de votre app bundle. (Il ne devrait pas y avoir de fautes de frappe, parce que vous devez être de coller le code directement.)Dans le second cas, il est plus difficile de dire quel est le problème.
filePath
doit être dans le répertoire documents, qui est accessible en écriture. Cependant, il serait beaucoup plus facile à diagnostiquer le problème si vous receviez une erreur réelle. Au lieu de passernil
pour le paramètre d'erreur dans-writeToFile:atomically:encoding:error:
, créer unNSError*
variable et passer son adresse. Si il y a un problème, puis, le pointeur de la souris sera mis au point pour une NSError objet qui décrit le problème.non, vous ne pas écrire à votre application bundle. Même si vous pouviez trouver un moyen de le faire, vos données ne serait pas sauvegardées lors de la synchronisation d'utilisateur, et vous auriez invalider la signature qui permet à l'application de s'exécuter.
OriginalL'auteur Caleb
Le fait que
writeToFile:
est de retourner une valeur booléenne OUI signifie simplement que l'appel est en train de compléter.Vous devriez être en train de passer un
NSError**
àwriteToFile:
et de l'examen de ce, e.g:Qui devrait vous donner une bonne idée de ce qui va mal (en supposant que l'erreur n'est pas nul, après l'appel).
OriginalL'auteur Mark Granoff
OriginalL'auteur
OriginalL'auteur