2014-07-11 4 views
0

Je construis un article en lisant l'application iOS.Comment stocker des données JSON dans un fichier?

J'ai un fichier .json dans le dossier de correspondance nommé Data.json Je ne suis pas en mesure d'écrire des données dedans.

Voici mon code:

- (void)writeJsonToFile { 
    //applications Documents dirctory path 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    //live json data url 
    NSString *stringURL = ysURL; 
    NSURL *url = [NSURL URLWithString:stringURL]; 
    NSData *urlData = [NSData dataWithContentsOfURL:url]; 
    //file to write to 

    NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"Data.json"]; 
    //attempt to download live data 
    if (urlData) { 

     [urlData writeToFile:filePath atomically:YES]; 
    } 
    //copy data from initial package into the applications Documents folder 
    else { 
     //file to write to 

     NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"Data.json"]; 
     //file to copy from 
     NSString *json = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"json" inDirectory:@"/match/Data.json"]; 
     NSData *jsonData = [NSData dataWithContentsOfFile:json options:kNilOptions error:nil]; 

     //write file to device 
     [jsonData writeToFile:filePath atomically:YES]; 
    } 
} 
+0

Aucune infraction, mais ces messages bizarres ne font que rendre votre code plus difficile à lire. –

+0

@ Jenox, j'ai supprimé les messages de journal, maintenant vous pouvez lire facilement. – Daljeet

+1

Comment savez-vous que vous n'êtes pas en mesure d'écrire des données dans le fichier? Messages d'erreur? Essayez-vous de relire les données? Si vous l'exécutez sur le simulateur, vous pouvez trouver les fichiers du simulateur dans: ~/Bibliothèque/Application Support/iPhone Simulator. –

Répondre

0

pouvez-vous nous en dire plus sur le problème que vous avez?

1) Vous n'avez pas à redéfinir le filePath dans l'autre parce que vous l'avez déjà fait auparavant.

NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"Data.json"]; 

Et vous devez utiliser stringByAppendingPathComponent qui ajoutent automatiquement la / vous aurez besoin ou non:

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Data.json] 

2) Êtes-vous sûr que votre Data.json est inclure dans votre projet? obtenez-vous un zéro?

NSString *json = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"json" inDirectory:@"/match/Data.json"]; 

3) Pour le problème de ne pas la charge: </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.pl​atform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle> (not loaded)

Cannot find executable for CFBundle CertUIFramework.axbundle

+0

Ceci est mon adresse e-mail: [email protected] ping moi afin que je puisse vous envoyer mon projet qui rend facile à comprendre. – Daljeet

0

Essayez d'utiliser la méthode de NSStrings pour écrire le fichier, et vérifiez votre code d'erreur:

NSURL *fileUrl = [[NSBundle mainBundle] URLForResource: @"Data" withExtension:@"json"]; 
NSError * error; 
[json writeToURL:fileUrl atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
NSLog(@"%@",error.localizedDescription); 
Questions connexes