2010-05-29 2 views
0

J'ai un problème avec un NSData writeToFile. J'ai implémenté le code ci-dessous mais j'ai une anomalie. Quand j'exécute mon programme sur le simulateur, le nouveau fichier est créé et les informations sont stockées; quand je construis l'application dans mon appareil, le fichier n'est pas créé. Le débogage ne me donne pas d'erreur mais ne sauvegarde rien. Pouvez-vous m'aider? Merci beaucoup et désolé pour mon anglais.Problème avec saveToFile

-(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{ 

    NSMutableData *data = [NSMutableData data]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0]; 
    [archiver encodeFloat:x forKey:@"x"]; 
    [archiver encodeFloat:y forKey:@"y"]; 
    [archiver encodeFloat:z forKey:@"z"]; 
    [archiver encodeObject:name forKey:@"name"]; 
    [archiver finishEncoding]; 
    BOOL result = [data writeToFile:@"XML Position" atomically:YES]; 
    if(result) 
     [self updateTextView:@"success"]; 
    [archiver release]; 

} 

Répondre

2

Vous ne pouvez pas écrire dans le répertoire de travail actuel de l'iPhone car vous exécutez un sandbox. En outre, vous devez vérifier la valeur de result. Si c'est NO, votre écriture a échoué. Au lieu de cela, vous devez trouver le répertoire des documents et écrire vos fichiers là:

-(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{ 

    NSMutableData *data = [NSMutableData data]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0]; 
    [archiver encodeFloat:x forKey:@"x"]; 
    [archiver encodeFloat:y forKey:@"y"]; 
    [archiver encodeFloat:z forKey:@"z"]; 
    [archiver encodeObject:name forKey:@"name"]; 
    [archiver finishEncoding]; 
    NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"XML Position"]; 
    BOOL result = [data writeToFile:filePath atomically:YES]; 
    if(result) 
     [self updateTextView:@"success"]; 
    [archiver release]; 

} 
+0

Totalement d'accord. C'est ce dont zp26 a besoin. – Jim

+0

et où je stocke dans mon iphone? – zp26

0

il suffit d'utiliser NSSearchPathForDirectoriesInDomains et écrivez votre fichier sur le chemin de retour par this.You besoin de ne pas se soucier de l'appareil ou d'un simulateur.

+0

je peux essayer ces mais je ne trouve pas le fichier. Ne pas trouver dans mon pc et dans mon iPhone. – zp26

+0

utilisez NSLog (@ "zp26% @", filePath); juste après la ligne NSString * filePath = ....... vous pouvez voir le chemin du fichier dans votre pc – Anurag

+0

je pense que zp26, maintenant vous auriez réussi à trouver le fichier dans votre pc ??? le meilleur du meilleur – Anurag